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

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

本文详解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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。