TensorFlow中通过assign更新变量值的正确方式

Hazel
Hazel
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍在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更改变量值的实例分享完毕,希望能为读者提供有效参考,也欢迎大家继续支持本站获取更多技术内容。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表