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

Understanding Tensorflow's shape, rank and size

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

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

谢谢

您正在打印 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))

我们只看第一个输出。

In [451]: tf.shape(t)
Out[451]: <tf.Tensor 'Shape_11:0' shape=(2,) dtype=int32>

tf.shape 在计算图中添加一个运算,returns 添加一个张量。

此张量的名称为 Shape_11:0 其中

  1. Shape 是生成此张量的 op 的名称,后跟
  2. _<n> 其中 <n> 是 图(调用 tf.shape)。 :<idx> 是该张量在生成它的操作的输出中的索引。

这个张量有 shape 那就是 (2,),所以它是一个二维张量。

这个张量有一个 type 那是 int32

其他 2 个 ops 乘积张量也是如此。按照前面的推理你可以理解他们的输出。

这就是你输出的解释。顺便说一句,如果你想获得操作的结果,你必须将操作评估为会话 Olivier Moindrot pointed out in .