首页 > 解决方案 > 在 Tensorflow 中将 1D 数组作为 3D 数组的元素传递

问题描述

在 Tensorflow 中:我的程序中生成了一组数组 x0、x1、x2 和 x3,每个数组都有 N 个元素。我还有一个零初始化的 3D 张量,尺寸为 (N,2,2)。

我想将每个数组作为我的 3D 张量的元素(在第三方方向有 N 个元素), M[:,0,0] =x0, M[:,0,1] =x1, M[ :,1,0] =x2 和 M[:,1,1] =x3,我想用 for 循环来做到这一点。

在我更熟悉的 Matlab 中,可以简单地做到这一点:

M(1,1,:)=x0
M(2,2,:)=x3
M(1,2,:)=x1
M(2,1,:)=x2

有没有一种方法可以在 for 循环中传递数组作为张量流中张量的第三维,例如:

for i in range(2):
    M[:,i,i]=x

其中 x 是一个数组?

标签: pythontensorflow

解决方案


我不认为它会那样工作。你可以这样做:

import tensorflow as tf
import numpy as np

x0,x1,x2,x3 = [ np.random.randint(0,10,3) for _ in range(4)]
tf_X = tf.stack( [ tf.stack([x0,x1]),
                   tf.stack([x2,x3]) ])

编辑:它可能会改变Tensorflow2。否则,您可以使用pytorch

import torch
import numpy as np

X = torch.ones([3,4])
v = np.arange(4)

X[0,:] = torch.from_numpy(v)

结果:

In [20]: X
Out[20]:
tensor([[0., 1., 2., 3.],
        [1., 1., 1., 1.],
        [1., 1., 1., 1.]])

推荐阅读