【发布时间】:2018-10-26 07:04:15
【问题描述】:
我可以通过手动打印张量的形状(tf.shape()) 在图形构建时获得张量的尺寸,但是如何在会话运行时获得这些张量的形状?
我在运行时想要张量形状的原因是因为在图形构建时一些张量的形状是 (?,8) 并且我无法推断出第一个维度。
【问题讨论】:
标签: python tensorflow
我可以通过手动打印张量的形状(tf.shape()) 在图形构建时获得张量的尺寸,但是如何在会话运行时获得这些张量的形状?
我在运行时想要张量形状的原因是因为在图形构建时一些张量的形状是 (?,8) 并且我无法推断出第一个维度。
【问题讨论】:
标签: python tensorflow
您必须将张量作为图形的输出。例如,如果 showme_tensor 是您要打印的张量,只需像这样运行图形:
_showme_tensor = sess.run(showme_tensor)
然后您可以在打印列表时打印输出。如果你有不同的张量要打印,你可以像这样添加它们:
_showme_tensor_1, _showme_tensor_2 = sess.run([showme_tensor_1, showme_tensor_2])
【讨论】:
一些张量在张量流中的形状为(?,?)的原因是它们是占位符。它可以在操作过程中根据您的输入数据而改变。
所以你必须将数据输入占位符,这样它才能知道你的张量的确切形状是什么。
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)
【讨论】: