在TensorFlow中,变量名称中“:0”的含义是什么?

时间:2016-12-02 05:51:11

标签: python tensorflow

import tensorflow as tf
with tf.device('/gpu:0'):
    foo = tf.Variable(1, name='foo')
    assert foo.name == "foo:0"
with tf.device('/gpu:1'):
    bar = tf.Variable(1, name='bar')
    assert bar.name == "bar:0"

上面的代码返回true。我在这里使用with tf.device来说明“:0”并不意味着变量位于特定设备上。所以变量中“:0”的含义是什么名称(本例中为foo和bar)?

1 个答案:

答案 0 :(得分:21)

它与底层API中的张量表示有关。张量是与某些操作的输出相关联的值。在变量的情况下,有一个Variable op,一个输出。 op可以有多个输出,因此这些张量引用为<op>:0<op>:1等。例如,如果使用tf.nn.top_k,则此op创建了两个值,因此您可能会看到TopKV2:0TopKV2:1

a,b=tf.nn.top_k([1], 1)
print a.name # => 'TopKV2:0'
print b.name # => 'TopKV2:1'

How to understand the term `tensor` in TensorFlow?