繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM