Python numpy.dstack()的TensorFlow等价物

Python numpy.dstack()的TensorFlow等价物,python,numpy,tensorflow,tensorflow2.0,Python,Numpy,Tensorflow,Tensorflow2.0,从一个带有形状的张量x:(5,5,5),我尝试将另一个带有形状(5,5)的张量y附加到最后一个维度。我想得到的是一个新的x,形状(5,5,6) 用numpy做这件事非常简单,我只需要做x=np.dstack([x,y])。然而,在TensorFlow中我做不到。由于x和y的形状不同,tf.concat()和tf.stack()都返回错误 如何在TensorFlow中执行此操作?使用tf.newaxis 您可以使用tf.newaxis有效地重塑张量,然后使用tf.concat a = tf.zer

从一个带有形状的张量
x
(5,5,5)
,我尝试将另一个带有形状
(5,5)
的张量
y
附加到最后一个维度。我想得到的是一个新的
x
,形状
(5,5,6)

用numpy做这件事非常简单,我只需要做
x=np.dstack([x,y])
。然而,在TensorFlow中我做不到。由于
x
y
的形状不同,tf.concat()和
tf.stack()都返回错误

如何在TensorFlow中执行此操作?

使用
tf.newaxis
您可以使用
tf.newaxis
有效地重塑张量,然后使用
tf.concat

a = tf.zeros((5,5,5))
b = tf.ones((5,5))
tf.concat((a, b[:, :, tf.newaxis]), axis=2)
使用
tf.展开dims
两者都会导致

<tf.Tensor: shape=(5, 5, 6), dtype=float32, numpy=
array([[[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]]], dtype=float32)>


天哪,我爱死你了。它是否也适用于
tf.expand_dims
而不是
tf.newaxis
?像
np.dstack
这样的函数都是用python编写的。阅读他们,看看他们是如何解决尺寸问题的。
<tf.Tensor: shape=(5, 5, 6), dtype=float32, numpy=
array([[[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]],

       [[0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.],
        [0., 0., 0., 0., 0., 1.]]], dtype=float32)>