TensorFlow变量初始化tf.Variable使用详解
本文详解TensorFlow中tf.Variable的创建、类型形状固定机制及值修改方法。介绍global_variables_initializer全局初始化与initialized_value依赖初始化的使用场景,结合代码示例说明如何在Session中正确启动Graph并完成变量赋值操作。
TensorFlow变量初始化概述
本系列文章默认读者已具备TensorFlow的基础知识。
tf.Variable创建与属性限制
通过调用tf.Variable构造函数创建变量并将其加入计算图。该构造函数要求提供变量的初始值,该初始值可以是任意类型和形状的Tensor,它决定了新变量的数据类型和形状。一旦通过Variable()构造函数创建变量,其类型和形状即被固定,无法直接修改,但可以通过assign方法更新变量的值。
修改变量形状的方法
若需修改变量的形状,可调用assign操作并设置validate_shape=False参数。
变量在计算图中的应用
由Variable()生成的变量本质上是一个Tensor,可直接作为计算图中其他操作的输入。此外,Tensor类重载的所有运算符均已继承至Variable中,因此可以直接对变量调用相关方法,从而将相应的节点添加到计算图中。
import tensorflow as tf
#创造variable.<initial-value>指定这个variable的type和shape
w = tf.Variable(<initial-value>, name=<optional-name>)
# 接着就可以把这个variable当做tensor运用在graph中.
y = tf.matmul(w, ...another variable or tensor...)
z = tf.sigmoid(w + y)
# 通过`assign()`和相关方法给这个w赋值
w.assign(w + 1.0)
w.assign_add(1.0)
Graph启动前的变量初始化要求
在启动Graph之前,必须对所有变量进行初始化。实际上,变量初始化操作(Op)本质上是一个赋值操作,即将变量的初始值赋给变量自身。
# 在session中启动graph.
with tf.Session() as sess:
# variable初始化.
sess.run(w.initializer)
# ...现在可以运行使用'w'的op...
全局变量初始化操作
对变量进行初始化最简单的方式是使用global_variables_initializer()函数,该函数可直接初始化所有已定义的变量:
# 初始化所有variables 的op
init_op = tf.global_variables_initializer()
# 在session中启动graph.
with tf.Session() as sess:
# 启动这个op
sess.run(init_op)
# ...现在可以运行使用variables的op...
处理变量间的初始化依赖
然而,在某些情况下,一个变量的初始化可能依赖于其他变量的初始化结果。为确保初始化顺序正确,可以使用initialized_value()方法。
以上关于TensorFlow变量初始化(tf.Variable)的使用详解即为全部内容,希望能为读者提供参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









