Почему я должен использовать tf.concat вместо tf.stack?

Есть ли веская причина использовать tf.concat вместо tf.stack? Они кажутся очень похожими. Это просто гарантировать, что результирующий тензор будет иметь такое же количество измерений, как и входной список тензоров?

Ответ 1

На самом деле, я неправильно понял, как работает 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]