Со страницы документации на tf.concat () :
tf.concat(
values,
axis,
name='concat')
...
Concatenates !!the list!! of tensors values along dimension axis,
...
the data from the input tensors is joined along the axis dimension.
tf.concat()
принимает список тензоров в качестве входных данных.
t1 это список. tf.shape(t1)
преобразует его в единый тензор и возвращает его форму. tf.concat(t1,1)
видит t1 как список 2 объектов: [[0],[1],[2]]
и [[3],[4],[5]]
. Он преобразует t1 в список, содержащий 2 тензора формы (3,1), объединяет их и возвращает тензор формы (3,2).
Чтобы убедиться в этом, вы можете запустить следующий пример:
with tf.Session() as sess:
t1 = [
[[0],[1],[2]],
[[3],[4],[5]],
]
t100 = [[0],[1],[2]]
t101 = [[3],[4],[5]]
print(sess.run(tf.concat(t1,1)))
# construct a list from t100 and t101
print(sess.run(tf.concat([t100, t101],1)))
Оба вернут одинаковый результат.
С другой стороны, t2 - это пустой массив, tf.concat (t2,1), рассматривает t2 как список, содержащий один простой массив, поэтому никакой конкатенации не происходит, и он по существу возвращает вам t2.