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)?
答案 0 :(得分:21)
它与底层API中的张量表示有关。张量是与某些操作的输出相关联的值。在变量的情况下,有一个Variable
op,一个输出。 op可以有多个输出,因此这些张量引用为<op>:0
,<op>:1
等。例如,如果使用tf.nn.top_k
,则此op创建了两个值,因此您可能会看到TopKV2:0
和TopKV2:1
a,b=tf.nn.top_k([1], 1)
print a.name # => 'TopKV2:0'
print b.name # => 'TopKV2:1'