В 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?