学术, 机器学习

机器学习中动态图和静态图的区别

TensorFlow 的早期版本 TensorFlow 1.x 是静态图,在搭建完结构后,需要创建会话(Session)并调用 sess.run() 来执行整个计算图,也就是需要额外代码运行。

对于动态图(例如 PyTorch、TensorFlow 2.x)来说,如果新增或删除了神经网络中的某个节点,计算图的结构会自动更新,直接得到正向传播的计算结果,或者用于后续的反向传播等计算操作,不需要额外代码运行。

以下是正向传播的 TensorFlow 代码例子,来说明静态图和动态图的区别。

TensorFlow 1.x 静态图例子:

# Tensorflow 静态图
import tensorflow.compat.v1 as tf1
tf1.disable_v2_behavior()  # 使用 TensorFlow 1.x 风格
a1 = tf1.constant(5)
b1 = tf1.constant(3)
c1 = tf1.multiply(a1, b1)
with tf1.Session() as sess: # 创建会话并执行计算图
    result = sess.run(c1)
    print("TensorFlow 1.x 静态图结果:", result)

TensorFlow 2.0 动态图例子:

# Tensorflow 动态图
import tensorflow as tf2
a2 = tf2.constant(5)
b2 = tf2.constant(3)
c2 = tf2.multiply(a2, b2)
print("TensorFlow 2.x 动态图结果:", c2.numpy()) # 直接输出结果

说明:以上两段代码好像不能放在一起同时运行,会出现一些错误。

相关博文:

783 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code