我正在尝试查看tf.rank(),tf.shape()和tf.size()的输出,但即使是一个简单的列表,我也得到了奇怪的结果:
t = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [2, 3, 4]]
以下是结果的样子:
In [451]: tf.shape(t)
Out[451]: <tf.Tensor 'Shape_11:0' shape=(2,) dtype=int32>
In [452]: tf.size(t)
Out[452]: <tf.Tensor 'Size_5:0' shape=() dtype=int32>
In [453]: tf.rank(t)
Out[453]: <tf.Tensor 'Rank_4:0' shape=() dtype=int32>
你能解释一下如何解读这些吗?
由于
答案 0 :(得分:2)
您正在打印tf.shape(t)
,tf.size(t)
和tf.rank(t)
的形状(张量,而非结果。
相反,创建一个会话并评估它们:
t = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9], [2, 3, 4]])
sess = tf.Session()
print sess.run(tf.shape(t))
print sess.run(tf.size(t))
print sess.run(tf.rank(t))
答案 1 :(得分:0)
让我们只看第一个输出。
In [451]: tf.shape(t)
Out[451]: <tf.Tensor 'Shape_11:0' shape=(2,) dtype=int32>
tf.shape
在计算图中添加一个op并返回张量。
此张量的名称为Shape_11:0
,其中
Shape
是生成此张量后跟_<n>
其中<n>
是相同种类的操作数
图(调用tf.shape
)。
:<idx>
是生成它的操作的输出中的张量的索引。此张量的shape
为(2,)
,因此它是一个二维张量。
此张量的type
为int32
。
其他2个操作产品张量也是如此。按照上一个推理,你可以理解他们的输出。
这是你输出的解释。顺便说一句,如果您想获得操作的结果,您必须将操作评估为Olivier Moindrot中指出的his answer会话。