TensorFlow Graph基础:创建、重置与张量节点获取

半杯拿铁
半杯拿铁
发布时间:2026-10-13| 4人浏览过
原创

本文介绍TensorFlow中Graph的基本操作,包括手动创建图、获取与重置默认图的方法,以及通过名称获取张量和节点操作的技巧。重点讲解get_tensor_by_name与get_operation_by_name的使用区别,并强调reset_default_graph前需释放资源。

创建与重置计算图

1. 创建图

在TensorFlow框架中,程序默认会自动创建一个计算图。除了系统自动生成的默认图外,开发者也可以手动创建新的Graph对象,并对其进行各种管理操作。

接下来,我们将演示如何使用tf.Graph函数来建立一个新的计算图,利用tf.get_default_graph函数获取当前的默认图,并通过tf.reset_default_graph函数对默认图进行重置操作。


import tensorflow as tf
import numpy as np


c = tf.constant(1.5)
g = tf.Graph()

with g.as_default():

  c1 = tf.constant(2.0)
  print(c1.graph)
  print(g)
  print(c.graph)

g2 = tf.get_default_graph()
print(g2)

tf.reset_default_graph()
g3 = tf.get_default_graph()
print(g3)

上述代码的执行结果如下所示:

从运行结果可以看出,变量c是在初始的默认图中创建的,因此打印出的图标识为13376A1FE10,这与通过g2获取的默认图对象一致。随后,代码使用tf.Graph创建了一个新的图对象g,并在其中添加了变量c1。最后,调用tf.reset_default_graph()重置了默认图,使得后续获取的默认图对象被替换为新的空图。

需要注意的是,在调用reset_default_graph()函数之前,必须确保当前图中所有的资源(如会话、变量等)都已经完全释放,否则程序将会抛出错误。

获取张量与节点操作

2. 获取张量

在构建好的图中,我们可以通过指定名称来获取对应的元素,例如获取图中的变量或操作(OP)等对象。


import tensorflow as tf
import numpy as np

g = tf.Graph()

with g.as_default():
  c1 = tf.constant(2.5, name='c1_constant')
  c2 = tf.Variable(1.5, dtype=tf.float32, name='c2_constant')
  add = tf.multiply(c1, c2, name='op_add')

  c_1 = g.get_tensor_by_name(name='c1_constant:0')
  c_2 = g.get_tensor_by_name(name='c2_constant:0')
  c_3 = g.get_tensor_by_name(name='op_add:0')


  print(c_1)
  print(c_2)
  print(c_3)

在测试过程中,我们为图中的元素设置了特定的变量名。在设置变量名时,系统会自动在名称后追加“:0”后缀。通常的做法是先打印出元素的名称,确认格式后,再将完整的名称用于后续获取操作。

3. 获取节点操作

获取节点操作(OP)的方法与获取张量的方法非常相似,主要使用get_operation_by_name函数。以下是具体的运行实例:


import tensorflow as tf
import numpy as np

a = tf.constant([[1.0, 2.0]])
b = tf.constant([[1.0], [3.0]])

tensor_1 = tf.matmul(a, b, name='matmul_1')

with tf.Session() as sess:
  sess.run(tf.global_variables_initializer())
  t1 = tf.get_default_graph().get_operation_by_name(name='matmul_1')
  t2 = tf.get_default_graph().get_tensor_by_name(name='matmul_1:0')
  print(t1)
  print('t1: ', sess.run(t1))
  print('t2: ', sess.run(t2))

在上述代码中,定义了一个名为matmul_1的矩阵乘法操作(OP)。在运行时,我们打印出该op对象。需要注意的是,如果要在名称后加上“:0”来获取OP运算结果对应的tensor,必须区分op对象和tensor对象,这两者是有区别的。

此外,我们还可以使用get_operations函数来获取图中的所有操作信息。另外,tf.Graph.as_graph_element函数可以将传入的对象验证并转换为张量或op对象,该函数具备验证和转换功能。

到此这篇关于TensorFlow使用Graph的基本操作的实现的文章就介绍到这了,更多相关TensorFlow Graph操作内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

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 算法库。