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]]

上一篇下一篇

猜你喜欢

热点阅读