[英]Passing 1D arrays as elements of a 3D array in Tensorflow
在Tensorflow中:我有一组在我的程序中生成的数组x0,x1,x2和x3,每个数组都有N个元素。 我还有一个零初始化尺寸的三维张量(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是一个数组?
我不认为它会那样工作。 你可以这样做:
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.]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.