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

27

使用tf.concat而不是tf.stack有什么好处吗?它们看起来非常相似。这只是为了保证结果张量的维数与输入张量列表相同吗?

1个回答

45

实际上,我误解了tf.stack的工作方式。如果axis参数在现有维度范围内,则会在该索引处插入一个新轴。

示例:

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
1
@skadaver 我不认为在一个很老的答案中添加这种类型的评论是一个好习惯。但是回答你的问题是肯定的。tf.concat 只能使用现有维度,而 tf.stack 则创建新维度。您可以使用 tf.expand_dims 预先创建大小为 1 的“额外”维度,然后在该特定维度上使用 tf.concat。 - lodo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接