Python 为什么我要使用tf.concat而不是tf.stack?

Python 为什么我要使用tf.concat而不是tf.stack?,python,tensorflow,Python,Tensorflow,是否有充分的理由使用tf.concat而不是tf.stack?他们看起来很相似。这只是为了保证生成的张量与输入的张量列表具有相同的维数吗?实际上,我误解了tf.stack的工作原理。如果轴参数在现有尺寸范围内,将在该索引处插入一个新轴 例如: import tensorflow as tf t1 = tf.random_normal([1, 3]) t2 = tf.random_normal([1, 3]) tf.stack([t1, t2], axis=1).shape.as_list()

是否有充分的理由使用
tf.concat
而不是
tf.stack
?他们看起来很相似。这只是为了保证生成的张量与输入的张量列表具有相同的维数吗?

实际上,我误解了
tf.stack
的工作原理。如果
参数在现有尺寸范围内,将在该索引处插入一个新轴

例如:

import tensorflow as tf

t1 = tf.random_normal([1, 3])
t2 = tf.random_normal([1, 3])

tf.stack([t1, t2], axis=1).shape.as_list() == [1, 2, 3]
tf.concat([t1, t2], axis=1).shape.as_list() == [1, 6]

有没有一种方法可以以某种方式使用tf.concat()并模仿tf.stack的行为?@skadaver我认为在这样一个旧答案中添加这种类型的注释不是一种好的做法。但你的问题的答案是肯定的。tf.concat仅适用于现有维度,而tf.stack创建新维度。您可以使用tf.expand_dims预先创建大小为1的“额外”维度,然后在该特定维度上使用tf.concat。