使用tensor.shape只会获取静态的shape:
a = tf.placeholder(tf.float32, [None, 128])
# returns [None, 128]
a.shape.as_list()
# [None, 128]
如果想要获取动态的shape,需要使用tf.shape():
tensr = tf.constant([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]])
tensr.shape
# TensorShape([Dimension(2), Dimension(5)])
list(tensr.shape)
# [Dimension(2), Dimension(5)]
print(tensr.shape)
# (2, 5)
tf.shape(tensr).eval().tolist()
# [2, 5]