pytorch计算图的可视化

下面是一个使用 torchviz 可视化 PyTorch 计算图的示例代码。这个例子中,将创建一个简单的神经网络层,并通过 torchviz 将其计算图可视化。

前提条件: 本地安装graphviz软件:

  1. 安装 Graphviz 包 :首先,你需要在你的系统上安装 Graphviz 包,而不仅仅是 Python 包。具体的命令取决于你的操作系统。对于 Ubuntu,可以使用 sudo apt-get install graphviz 命令进行安装。对于 MacOS,可以使用 brew install graphviz 命令进行安装。对于 Windows 用户,你可以尝试从 Graphviz 官方网站 下载并安装 Windows 包,然后安装 Python Graphviz 包。安装完成后,将如: C:\Program Files (x86)\Graphviz2.38\bin 添加到用户路径和系统路径中。

  2. 修改脚本的环境变量:对于 Windows 用户,一个常见的解决方法是直接在脚本中修改环境变量。在 Python 脚本的开始添加以下两行代码,替换 'D:/Program Files (x86)/Graphviz2.38/bin/' 为你的 bin 文件实际位置:

    python 复制代码
    import os
    os.environ["PATH"] += os.pathsep + 'D:/Program Files (x86)/Graphviz2.38/bin/'

    这确保了系统可以在执行期间找到 dot.exe 可执行文件。

进入正题,首先,确保你已经安装了 torchviz 和 graphviz。你可以通过以下命令安装它们:

bash 复制代码
pip install torchviz
pip install graphviz

然后,运行以下 Python 代码:

python 复制代码
import torch
from torchviz import make_dot

# 创建一个需要梯度的张量
x = torch.randn(1, 1, requires_grad=True)

# 定义一个简单的计算过程
y = x * 2
z = y + 3
out = z * z * 3

# 计算输出的均值
out.mean().backward()

# 使用 torchviz 创建计算图
dot = make_dot(out, params=dict(list(x.named_parameters()) + [('x', x)]))

# 渲染计算图
dot.format = 'png'
dot.render('computational_graph', format='png', cleanup=True)

print("Computational graph has been saved as 'computational_graph.png'")

代码解释:

  1. 创建张量 :我们创建了一个需要梯度的张量 x
  2. 定义计算过程:通过一系列操作(乘法、加法、平方)定义了一个简单的计算过程。
  3. 反向传播 :通过调用 .backward() 方法进行反向传播,计算梯度。
  4. 创建计算图 :使用 make_dot 函数创建计算图。这个函数接受输出张量和参数字典(包含所有需要梯度的张量)。
  5. 渲染计算图 :使用 dot.render() 方法将计算图渲染为 PNG 图像,并保存到文件。

输出:

运行上述代码后,将在当前目录下生成一个名为 computational_graph.png 的图像文件,其中包含了计算图的可视化表示。

相关推荐
哥布林学者1 小时前
高光谱成像(七)线性光谱混合模型 LMM
机器学习·高光谱成像
一个努力编程人1 小时前
机器学习————GBDT算法
人工智能·算法·机器学习
Coding茶水间2 小时前
基于深度学习的茶叶病害检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·机器学习
Project_Observer2 小时前
任务条件布局规则如何帮助自动管理任务?
大数据·数据结构·人工智能·深度学习·机器学习·编辑器
老刘说AI2 小时前
初识神经网络与机器学习
人工智能·深度学习·神经网络·机器学习·语言模型·gpt-3·集成学习
格林威2 小时前
Halcon vs OpenCV 保存图像速度对比测试
人工智能·深度学习·opencv·机器学习·计算机视觉·halcon·工业相机
Fleshy数模2 小时前
从基础到实战:词向量转换在评价文本分析中的应用
爬虫·python·机器学习
资深web全栈开发3 小时前
迁移学习:站在巨人的肩膀上
人工智能·机器学习·迁移学习
HyperAI超神经3 小时前
在线教程丨免费CPU资源快速部署,覆盖Qwen3.5/DeepSeek-R1/Gemma 3/Llama 3.2等热门开源模型
人工智能·深度学习·学习·机器学习·ai编程·llama·vllm
集芯微电科技有限公司3 小时前
700V/1.6A单通道GaN FET增强型驱动器具有零反向恢复损耗
人工智能·单片机·嵌入式硬件·深度学习·神经网络·机器学习·生成对抗网络