【问题标题】:In TensorFlow,what's the meaning of ":0" in a Variable's name?在TensorFlow中,变量名称中的“:0”是什么意思?
【发布时间】:2016-12-02 05:51:11
【问题描述】:
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)?

【问题讨论】:

  • 断言返回真吗?你读过tensorflow.Variable 类的文档吗?
  • @cricket_007 是的,它返回true,并且在tensorflow doc,你可以找到一些类似的代码,但是文档从来没有解释“:0”的含义。
  • 明白了。我只是在阅读源代码。不过不容易发现。
  • 据我所知,它的意思是“第 0 次迭代后的变量栏”,但我不是经验丰富的 TF 用户

标签: python tensorflow


【解决方案1】:

这与底层 API 中张量的表示有关。张量是与某个操作的输出相关联的值。如果是变量,则有一个带有一个输出的Variable 操作。一个操作可以有多个输出,因此这些张量被引用为<op>:0<op>:1 等。例如,如果您使用tf.nn.top_k,则此操作会创建两个值,因此您可能会看到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?

【讨论】:

  • 当你创建一个变量时,例如使用tf.Variable(),你不会也不能在名称上附加:0,但是当你得到一个变量名时,例如some_var.name,你得到的名字有一个:0。我认为这是很多混乱的根源。在某些情况下,“变量”并不是真正的变量,而是获取变量的张量运算,因此末尾有一个 :0,但这在文档中并没有真正明确解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 2023-03-19
  • 1970-01-01
  • 2012-06-26
相关资源
最近更新 更多