如何在运行时获取张量的维数?

时间:2018-10-26 07:04:15

标签: python tensorflow

我可以通过手动打印张量的形状(tf.shape())在图构建时获得张量的尺寸,但是如何在会话运行时获取这些张量的形状?
我在运行时想要张量的形状的原因是因为在图构造时某些张量的形状即将变为(?,8),因此我无法推断出第一维。

2 个答案:

答案 0 :(得分:0)

您必须使张量成为图形的输出。例如,如果showme_tensor是您要打印的张量,则只需运行如下图形:

_showme_tensor = sess.run(showme_tensor)

,然后您可以在打印列表时仅打印输出。如果要打印不同的张量,则可以像这样添加它们:

_showme_tensor_1, _showme_tensor_2 = sess.run([showme_tensor_1, showme_tensor_2])

答案 1 :(得分:0)

某些张量在张量流中呈(?,?)形状的原因是它们是占位符。操作期间它可能会更改,具体取决于您的输入数据。

因此,您必须将数据输入到占位符中,以便可以知道张量的确切形状。

import tensorflow as tf
import numpy as np

x = tf.placeholder(tf.float32, shape=(None, None))
print(x.shape)  # ( ?,?)
with tf.Session() as sess:

  rand_array = np.random.rand(3, 3)
  after_sess_x = sess.run(x,feed_dict={x: rand_array})
  print(after_sess_x.shape) # ( 3,3)