如何为tensorflow变量分配值?
0 296
1

我正在尝试为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

该值没有改变,为什么呢?

收藏
2021-01-29 11:19 更新 karry •  2600
共 1 个回答
高赞 时间
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,对应变量的更新值,使赋值更容易。 但是,x.assign(1)在TF2中会急切地分配值:

x.assign(1)
print(x.numpy())
# ==> 1

Via:https://stackoverflow.com/a/34220750/14964791

收藏
2021-01-29 11:56 更新 anna •  3230