在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是一个数组?
答案 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.]])