深度学习模型可视化工具——Netron使用介绍

简介: 深度学习模型可视化工具——Netron使用介绍

0. 前言

按照国际惯例,首先声明:本文只是我自己学习的理解,虽然参考了他人的宝贵见解及成果,但是内容可能存在不准确的地方。如果发现文中错误,希望批评指正,共同进步。

本文介绍深度学习网络模型结构可视化工具——Netron。

以AlexNet为例,如果直接print输出为:

AlexNet(
  (features): Sequential(
    (0): Conv2d(3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))
    (1): ReLU(inplace=True)
    (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
    (3): Conv2d(64, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))
    (4): ReLU(inplace=True)
    (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
    (6): Conv2d(192, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (7): ReLU(inplace=True)
    (8): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (9): ReLU(inplace=True)
    (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (11): ReLU(inplace=True)
    (12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (avgpool): AdaptiveAvgPool2d(output_size=(6, 6))
  (classifier): Sequential(
    (0): Dropout(p=0.5, inplace=False)
    (1): Linear(in_features=9216, out_features=4096, bias=True)
    (2): ReLU(inplace=True)
    (3): Dropout(p=0.5, inplace=False)
    (4): Linear(in_features=4096, out_features=4096, bias=True)
    (5): ReLU(inplace=True)
    (6): Linear(in_features=4096, out_features=1000, bias=True)
  )
)

这样非常不直观,可读性非常差。如果使用Netron,就可以直观地看出模型的结构:

本文将详细介绍Netron的使用方法。


1. Netron介绍

Netron 是一个开源的深度学习和机器学习模型可视化工具,它能够以图形化的方式展示各种深度神经网络、机器学习模型及其内部结构。开发者可以使用 Netron 来直观地理解、调试和验证不同框架生成的模型文件。


以下是一些关于 Netron 的关键特点:


  • 跨平台支持:Netron 可以在多种操作系统上运行,包括 Windows、macOS 和 Linux,并且有浏览器版本可以直接在线使用。本文将不安装其他软件,展示在浏览器上使用的方法。
  • 广泛兼容性:Netron 支持多种深度学习框架产生的模型格式,如 ONNX (Open Neural Network Exchange)、TensorFlow、Keras、Caffe、Core ML、PyTorch、MXNet、PaddlePaddle 等。
  • 可视化内容:通过 Netron,用户可以看到模型的层级结构(每一层的名称、类型、输入和输出维度等),以及模型参数的具体数值(如果模型文件中包含的话)。
  • 交互式界面:提供了一个简洁易用的图形用户界面,用户可以通过点击和滚动来探索模型的细节,便于对复杂的模型架构进行快速解读。
  • 实用功能:除了基本的可视化之外,Netron 还提供了诸如查看权重张量、导出模型为其他格式等功能,方便了模型迁移和部署阶段的工作。


2. Netron的使用方法

Netron有以下3种使用方法,本文最推荐第三种使用方法,也仅详细介绍这种方法。


2.1 本地安装使用

对于Windows、macOS和Linux系统,可以下载对应的可执行程序安装后运行。下载地址:GitHub - lutzroeder/netron: Visualizer for neural network, deep learning and machine learning models



2.2 通过网页版加载模型使用

Netron的网页版地址:Netron

点击Open Model,导入已保存的模型(.pth文件)就可以看到模型的可视化结构。

2.3 通过导入Netron库使用(推荐)

首先安装Netron库:pip install netron

对应还需要安装onnx库:pip install onnx

以AlexNet为例:通过torch.onnx.export()生成.onnx文件,再通过netron.start()打开.onnx文件就可以看到文章开头的网络模型可视化结构图了。

import torch
from torchvision.models import AlexNet
import netron
 
model = AlexNet()
 
input = torch.ones((1,3,224,224))
 
torch.onnx.export(model, input, f='AlexNet.onnx')   #导出 .onnx 文件
netron.start('AlexNet.onnx') #展示结构图


3. Netron的功能介绍

除了提供基本的模型可视化方案外,Netron还有以下非常棒的功能:


3.1 层次结构展示

以图形化的方式呈现模型中的每一层及其连接关系,便于用户快速了解模型的整体架构。


例如查看第一个卷积层:

鼠标放在INPUTS的X name: input.1上,对应输入的箭头就会标红,标明输入来源:

对应输出output也有同样的效果:


这样就可以清晰地看到输入输出路径。


3.2 参数查看

对于支持的模型格式,Netron还允许用户查看模型中包含的具体权重和偏置参数。


还以第一个卷积层为例,点击W name: features.0.weight右边的“+”就可以直观地看到卷积核的参数,其他权重的查看也是同样方法。


3.3 导出图片格式

点击左侧的Show/Hide Attributes和Show/Hide Weights可以定义结构图的显示信息内容:

也可以转成水平显示:

调整好自己想要的结构图就可以点击左侧的Export导出图片了:


相关文章
|
10月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
1229 27
|
9月前
|
机器学习/深度学习 数据可视化 算法
深度学习模型结构复杂、参数众多,如何更直观地深入理解你的模型?
深度学习模型虽应用广泛,但其“黑箱”特性导致可解释性不足,尤其在金融、医疗等敏感领域,模型决策逻辑的透明性至关重要。本文聚焦深度学习可解释性中的可视化分析,介绍模型结构、特征、参数及输入激活的可视化方法,帮助理解模型行为、提升透明度,并推动其在关键领域的安全应用。
827 0
|
8月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
761 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
7月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
机器学习/深度学习 数据采集 自然语言处理
深度学习实践技巧:提升模型性能的详尽指南
深度学习模型在图像分类、自然语言处理、时间序列分析等多个领域都表现出了卓越的性能,但在实际应用中,为了使模型达到最佳效果,常规的标准流程往往不足。本文提供了多种深度学习实践技巧,包括数据预处理、模型设计优化、训练策略和评价与调参等方面的详细操作和代码示例,希望能够为应用实战提供有效的指导和支持。
|
10月前
|
机器学习/深度学习 人工智能 PyTorch
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
本文以 MNIST 手写数字识别为切入点,介绍了深度学习的基本原理与实现流程,帮助读者建立起对神经网络建模过程的系统性理解。
876 15
AI 基础知识从 0.2 到 0.3——构建你的第一个深度学习模型
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
AI 基础知识从 0.3 到 0.4——如何选对深度学习模型?
本系列文章从机器学习基础出发,逐步深入至深度学习与Transformer模型,探讨AI关键技术原理及应用。内容涵盖模型架构解析、典型模型对比、预训练与微调策略,并结合Hugging Face平台进行实战演示,适合初学者与开发者系统学习AI核心知识。
746 15
|
8月前
|
机器学习/深度学习 数据采集 传感器
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
【WOA-CNN-LSTM】基于鲸鱼算法优化深度学习预测模型的超参数研究(Matlab代码实现)
533 0
|
11月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
497 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习模型、算法与应用的全方位解析
深度学习,作为人工智能(AI)的一个重要分支,已经在多个领域产生了革命性的影响。从图像识别到自然语言处理,从语音识别到自动驾驶,深度学习无处不在。本篇博客将深入探讨深度学习的模型、算法及其在各个领域的应用。
1839 3

热门文章

最新文章