如何在TensorFlow中更改变量的值?

时间:2017-10-04 11:13:25

标签: python tensorflow

我在TensorFlow中创建了一个Variable

c = tf.Variable([1.0, 2.0, 3.0], tf.float32)

然后我定义一个占位符:

x = tf.placeholder(tf.float32)

之后我定义了一个结合上面两个定义对象的函数(计算图):

y = x + c

之后我“初始化”全局变量:

s = tf.Session()
init = tf.global_variables_initializer()
s.run(init)

最后,我可以运行我的功能:

s.run(y, {x : [10.0, 20.0, 30.0]})

现在,我想更改c的值。 TensorFlow有可能吗?我试过例如:

c = tf.assign(c, [1.0, 1.0, 1.0])

还有:

c = tf.Variable([1.0, 1.0, 1.0], tf.float32)

没有任何作用。每当我打电话

s.run(y, {x : [10.0, 20.0, 30.0]})

我仍然得到旧结果(对应于c的旧/初始值)。

那么,如何在TensorFlow中为全局变量赋值?

2 个答案:

答案 0 :(得分:1)

在为变量'c'分配新值后,您必须使会话初始化新值

c = tf.assign(c, [1.0, 1.0, 1.0])
s.run(c)
s.run(y, {x : [10.0, 20.0, 30.0]})
array([ 11.,  21.,  31.], dtype=float32)

答案 1 :(得分:1)

使用您使用的某种方法为变量c分配新值后,您需要对其进行评估:

c.eval(session=s)

s.run(c)