了解Tensorflow的形状,等级和大小

时间:2016-06-18 17:38:11

标签: tensorflow

我正在尝试查看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>

你能解释一下如何解读这些吗?

由于

2 个答案:

答案 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,其中

  1. Shape是生成此张量后跟
  2. 的op的名称
  3. _<n>其中<n>是相同种类的操作数 图(调用tf.shape)。 :<idx>是生成它的操作的输出中的张量的索引。
  4. 此张量的shape(2,),因此它是一个二维张量。

    此张量的typeint32

    其他2个操作产品张量也是如此。按照上一个推理,你可以理解他们的输出。

    这是你输出的解释。顺便说一句,如果您想获得操作的结果,您必须将操作评估为Olivier Moindrot中指出的his answer会话。