我正在尝试为python中的tensorflow变量分配一个新值。
import tensorflow as tf
import numpy as np
x = tf.Variable(0)
init = tf.initialize_all_variables()
sess = tf.InteractiveSession()
sess.run(init)
print(x.eval())
x.assign(1)
print(x.eval())
但是我得到的输出是
0
0
因此该值没有改变。我想念什么?
在TF1中,该语句x.assign(1)
实际上并未将值分配1
给x
,而是创建了一个tf.Operation
必须显式运行以更新变量的*。调用Operation.run()
或Session.run()
可用于运行该操作:
assign_op = x.assign(1)
sess.run(assign_op) # or `assign_op.op.run()`
print(x.eval())
# ==> 1
(*实际上,它返回tf.Tensor
与变量的更新值相对应的a ,以便更轻松地链接分配。)
但是,x.assign(1)
现在在TF2中会急切地分配值:
x.assign(1)
print(x.numpy())
# ==> 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句