В TensorFlow значение ": 0" в имени переменной?

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.I использовать with tf.device здесь, чтобы проиллюстрировать, что ": 0" не означает, что переменная лежит на конкретном устройстве. Так что значение ": 0" в имени переменной (foo и бар в этом примере)?

Ответ 1

Это связано с представлением тензоров в базовом API. Тензор - это значение, связанное с выходом некоторого op. В случае переменных есть Variable 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'

Как понять термин "тензор" в TensorFlow?