TensorFlow变量初始化tf.Variable使用详解

程一诺
程一诺
发布时间:2026-10-13 | 6人浏览过
原创

本文详解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)的使用详解即为全部内容,希望能为读者提供参考,并欢迎大家继续支持本站。

本站声明

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

Python 相关产品和应用

全部下载

专题列表