PyTorch 神经网络模型可视化(Netron)

简介: PyTorch 神经网络模型可视化(Netron)

PyTorch 神经网络模型可视化(Netron

Netron 是一个用于可视化深度学习模型的工具,可以帮助我们更好地理解模型的结构和参数。

支持以下格式的模型存储文件:

格式 模板(文件) 免下载打开
ONNX squeezenet open
TensorFlow Lite yamnet open
TensorFlow chessbot open
Keras mobilenet open
TorchScript traced_online_pred_layer open
Core ML exermote open
Darknet yolo open

GitHub 链接:https://github.com/lutzroeder/netron

官网:https://netron.app


ONNX

(1)在 PyTorch 中,可以使用 torch.onnx.export 函数将模型导出为 ONNX 格式:

import torch
import netron
# 定义 PyTorch 模型
class MyModel(torch.nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv = torch.nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1)
        self.bn = torch.nn.BatchNorm2d(64)
        self.relu = torch.nn.ReLU(inplace=True)
        self.pool = torch.nn.MaxPool2d(kernel_size=2, stride=2)
        self.fc = torch.nn.Linear(64 * 8 * 8, 10)
    def forward(self, x):
        x = self.conv(x)
        x = self.bn(x)
        x = self.relu(x)
        x = self.pool(x)
        x = x.view(-1, 64 * 8 * 8)
        x = self.fc(x)
        return x
# 创建模型实例并加载预训练权重
model = MyModel()
# 设置示例输入
input = torch.randn(1, 3, 32, 32)
# 将模型导出为 ONNX 格式
torch.onnx.export(model, input, './model/Test/onnx_model.onnx')  # 导出后 netron.start(path) 打开

(2)再使用 Netron 的 netron.start 指令打开导出的 ONNX 模型文件:

import netron
# 打开导出的 ONNX 模型文件
netron.start('./model/Test/onnx_model.onnx')
Serving './model/Test/onnx_model.onnx' at http://localhost:8080

将在浏览器中自动启动 Netron 工具,并对该模型文件进行可视化。

注意:

当模型被导出为 ONNX 格式,会在指定目录生成以 .onnx 为后缀的文件,只需将其上传至 Netron 官网 也可实现可视化:

在 Netron 中,可以查看模型的结构、参数和输入输出等信息。可以通过缩放、旋转和平移等操作来调整模型的可视化效果,以更好地理解模型的结构和参数。

torch.save

当使用 torch.save 对保存的模型进行可视化时:

# 保存模型
torch.save(model.state_dict(), './model/Test/saved_model.pt')
# 可视化
netron.start('./model/Test/saved_model.pt')

如下图,这种方式并不能显示该模型的详细信息:

所以: Netron 不支持 PyTorch 通过 torch.save 方式导出的模型文件。

torch.jit.script

可参考:torch.jit.script 与 torch.jit.trace

使用 torch.jit.script 先将模型转换为脚本,再使用 torch.jit.save 保存模型,最后进行可视化:

# TorchScript:script
scripted_model = torch.jit.script(model)
# 保存模型
torch.jit.save(scripted_model, './model/Test/scripted_model.pth')
# 可视化
netron.start('./model/Test/scripted_model.pth')

torch.jit.trace

可参考:torch.jit.script 与 torch.jit.trace

使用 torch.jit.trace 先将模型转换为跟踪模型执行的工具,再使用 torch.jit.save 保存模型,最后进行可视化:

# TorchScript:trace
traced_model = torch.jit.trace(model, torch.randn(1, 3, 32, 32))
# 保存模型
torch.jit.save(traced_model, './model/Test/traced_model.pth')
# 可视化
netron.start('./model/Test/traced_model.pth')

目录
相关文章
|
9天前
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
30 2
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
|
9天前
|
机器学习/深度学习 移动开发 测试技术
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
29 1
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
|
9天前
|
机器学习/深度学习 编解码 自动驾驶
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
32 3
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV1,用于移动视觉应用的高效卷积神经网络
|
9天前
|
机器学习/深度学习 文件存储 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v2,加速训练,快速收敛
17 1
|
9天前
|
机器学习/深度学习 编解码 TensorFlow
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
29 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络为EfficientNet v1 高效的移动倒置瓶颈结构
|
9天前
|
机器学习/深度学习 存储
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
30 0
RT-DETR改进策略【模型轻量化】| PP-LCNet:轻量级的CPU卷积神经网络
|
9天前
|
机器学习/深度学习 编解码 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 ICCV 2023的EfficientViT 用于高分辨率密集预测的多尺度线性关注
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 ICCV 2023的EfficientViT 用于高分辨率密集预测的多尺度线性关注
20 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 ICCV 2023的EfficientViT 用于高分辨率密集预测的多尺度线性关注
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
RT-DETR改进策略【模型轻量化】| 替换华为的极简主义骨干网络:VanillaNet
32 0
|
9天前
|
机器学习/深度学习 计算机视觉 异构计算
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
20 0
RT-DETR改进策略【模型轻量化】| 替换骨干网络 CVPR-2023 FasterNet 高效快速的部分卷积块
|
6月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
85 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码

热门文章

最新文章

推荐镜像

更多