Прежде всего, вы можете присвоить значения переменных/константы только путем подачи значений в них так же, как вы это делаете с заполнителями. Так что это совершенно законно делать:
import tensorflow as tf
x = tf.Variable(0)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print sess.run(x, feed_dict={x: 3})
Что касается вашей путаницы с оператором tf.assign(). В TF ничего не выполняется, прежде чем запускать его внутри сеанса. Поэтому вам всегда нужно сделать что-то вроде этого: op_name = tf.some_function_that_create_op(params)
, а затем внутри сеанса, который вы запускаете sess.run(op_name)
. Использование назначить в качестве примера вы будете делать что-то вроде этого:
import tensorflow as tf
x = tf.Variable(0)
y = tf.assign(x, 1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print sess.run(x)
print sess.run(y)
print sess.run(x)
Спасибо! assign_op.run() дает ошибку: AttributeError: объект «Тензор» не имеет атрибута «run». Но sess.run (assign_op) работает отлично. – abora
В этом примере представлены данные, хранящиеся в памяти 'Variable'' x, перед тем как операция 'assign'/изменчивый тензор была перезаписана или создан новый тензор, который сохраняет обновленное значение? – dannygoldstein
Текущая реализация 'assign()' перезаписывает существующее значение. – mrry