在Tensorflow中将1D数组作为3D数组的元素传递

时间:2019-06-23 21:33:20

标签: python tensorflow

在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是一个数组?

1 个答案:

答案 0 :(得分:0)

我认为那样行不通。您可以这样做:

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.]])