首页 > 解决方案 > 如何解释 tensorflow 中 tf.rank 的输出

问题描述

我是 tensorflow 的新手,对 tf.rank 方法有疑问。

在文档https://www.tensorflow.org/api_docs/python/tf/rank中有一个关于 tf.rank 的简单示例:

# shape of tensor 't' is [2, 2, 3]
t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
tf.rank(t)  # 3

但是当我运行下面的代码时:

t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
print(tf.rank(t))  # 3

我得到如下输出:

Tensor("Rank:0", shape=(), dtype=int32)

为什么我可以得到“3”的输出?

标签: pythontensorflow

解决方案


正如我在这个问题的评论中所说,tf.rank(t)创建一个负责评估张量等级的张量t。如果您使用 pythonprint()函数,它只会打印有关张量本身的信息。

让我们将tf.rank(t)张量分配给一个变量rank(如@Picnix_ 建议的那样)并在 a 下评估它的值tf.Session()

import tensorflow as tf

t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
rank = tf.rank(t)

with tf.Session() as sess:
    rank_value = sess.run(rank)
    print(rank_value)  # Outputs --> 3

所以,rank_value是包含 tensor 值的变量rank,并且正如文档所暗示的那样,它的值是 3。希望这对 tensorflow 的工作原理有所了解。


推荐阅读