tf.concat和tf.stack的比较 2018-06-07
2018-06-07 本文已影响0人
美联储
with tf.Session() as sess:
a = tf.constant([[1,2,3],[3,4,5]]) # shape (2,3)
b = tf.constant([[7,8,9],[10,11,12]]) # shape (2,3)
ab1 = tf.concat([a,b], axis=0)
ab2 = tf.stack([a, b], axis=0)
print('ab1的形状 : %s' % ab1.get_shape(),'\r\n',sess.run(ab1),'\r\n')
print('ab2的形状 : %s:'% ab2.get_shape(),'\r\n',sess.run(ab2),'\r\n')
print('观察ab1和ab2,tf.stack会增加维度\r\n')
ab3 = tf.concat([a,b], axis=1)
print('ab3的形状 : %s:'% ab3.get_shape(),'\r\n',sess.run(ab3),'\r\n')
输出结果:
ab1的形状 : (4, 3)
[[ 1 2 3]
[ 3 4 5]
[ 7 8 9]
[10 11 12]]
ab2的形状 : (2, 2, 3):
[[[ 1 2 3]
[ 3 4 5]]
[[ 7 8 9]
[10 11 12]]]
观察ab1和ab2,发现tf.stack会增加维度,即先把原先各自的矩阵先包一层皮(添加中括号[ ])再去tf.concat。
ab3的形状 : (2, 6):
[[ 1 2 3 7 8 9]
[ 3 4 5 10 11 12]]