Tensorflow中的tf.rank函数

时间:2016-10-22 18:23:37

标签: tensorflow

我试图理解张量流中的tf.rank函数。从文档here,我理解等级应该返回张量中不同元素的数量。

这里x和权重是2个不同的2 * 2张量,每个张量有4个不同的元素。但是,rank()函数输出是:

  

Tensor(“Rank:0”,shape =(),dtype = int32)Tensor(“Rank_1:0”,shape =(),   D型= INT32)

另外,对于张量x,我使用tf.constant()和dtype = float将ndarray转换为float32张量,但rank()仍然输出为int32。

g = tf.Graph()
with g.as_default():
    weights = tf.Variable(tf.truncated_normal([2,2]))
    x = np.asarray([[1 , 2], [3 , 4]])
    x = tf.constant(x, dtype = tf.float32)
    y = tf.matmul(weights, x)
    print (tf.rank(x), tf.rank(weights))


with tf.Session(graph = g) as s:
    tf.initialize_all_variables().run()
    print (s.run(weights), s.run(x))
    print (s.run(y))

我应该如何解释输出。

1 个答案:

答案 0 :(得分:3)

首先,tf.rank返回张量的维度,而不是元素的数量。例如,tf.rank的输出要求2x2矩阵为2.

要打印张量的等级,请创建一个合适的节点,例如rank = tf.rank(x),然后使用Session.run()评估此节点,就像您对权重和x所做的那样。执行print (tf.rank(x), tf.rank(weights))期望打印出张量的描述,因为tf.rank(x), tf.rank(weights)是图的节点,而不是具有定义值的变量。