tf.concat是沿某一维度拼接shape相同的张量,拼接生成的新张量维度不会增加。
而tf.stack是在新的维度上拼接,拼接后维度加1。
举个例子
import tensorflow as tf
a = tf.constant([[1, 2, 3], [4, 5, 6]])
b = tf.constant([[7, 8, 9], [10, 11, 12]])
ab1 = tf.concat([a, b], axis=0)
ab2 = tf.stack([a, b], axis=0)
sess = tf.Session()
print(sess.run(ab1))
print(sess.run(ab2))
print(ab1)
print(ab2)
运行结果为:
可以看到用stack拼接的维度变成了2x2x3.
上面的例子中的axis=0,若改成axis=1,就在第一个向量后面进行拼接。