TensorFlow中通过assign更新变量值的正确方式
本文介绍在TensorFlow中如何正确更改变量的值。核心方法是使用tf.assign()创建更新操作,并必须在Session中通过run()执行该操作才能在图中生效。直接对Python变量赋值无效,且若传入非Tensor类型会导致AttributeError。
具体实现步骤如下所示:
from __future__ import print_function,division import tensorflow as tf #create a Variable w=tf.Variable(initial_value=[[1,2],[3,4]],dtype=tf.float32) x=tf.Variable(initial_value=[[1,1],[1,1]],dtype=tf.float32,validate_shape=False) init_op=tf.global_variables_initializer() update=tf.assign(x,[[1,2],[1,2]]) with tf.Session() as session: session.run(init_op) session.run(update) x=session.run(x) print(x)
实验结果:
[[ 1. 2.] [ 1. 2.]]
在TensorFlow中,使用tf.assign(variable, new_value)函数来定义变量值的更新操作。需要注意的是,这仅仅是在计算图中定义了更新节点,必须通过调用GPU或CPU执行该更新过程,即运行Session,才能真正完成值的修改。
session.run(update)
TensorFlow不支持直接对Python层面的变量进行赋值更改以影响计算图状态。
from __future__ import print_function,division import tensorflow as tf #create a Variable x=tf.Variable(initial_value=[[1,1],[1,1]],dtype=tf.float32,validate_shape=False) x=[[1,3],[2,4]] init_op=tf.global_variables_initializer() update=tf.assign(x,[[1,2],[1,2]]) with tf.Session() as session: session.run(init_op) session.run(update) print(session.run(x))
错误提示:
"C:\Program Files\Anaconda3\python.exe" D:/pycharmprogram/tensorflow_learn/assign_learn/assign_learn.py Traceback (most recent call last): File "D:/pycharmprogram/tensorflow_learn/assign_learn/assign_learn.py", line 8, in <module> update=tf.assign(x,[[1,2],[1,2]]) File "C:\Program Files\Anaconda3\lib\site-packages\tensorflow\python\ops\state_ops.py", line 271, in assign if ref.dtype._is_ref_dtype: AttributeError: 'list' object has no attribute 'dtype' Process finished with exit code 1
以上关于TensorFlow更改变量值的实例分享完毕,希望能为读者提供有效参考,也欢迎大家继续支持本站获取更多技术内容。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













