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

news2024/12/25 9:06:15

文章目录

  • PyTorch 神经网络模型可视化(Netron)
    • ONNX
    • torch.save
    • torch.jit.script
    • torch.jit.trace

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

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

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

格式模板(文件)免下载打开
ONNXsqueezenetopen
TensorFlow Liteyamnetopen
TensorFlowchessbotopen
Kerasmobilenetopen
TorchScripttraced_online_pred_layeropen
Core MLexermoteopen
Darknetyoloopen

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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/715545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scanf大家都用过,但是scanf的多组输入!及scanf的两种输入方法你了解过嘛?看完这篇文章保证你彻底认识scanf!

☕ hello宝子们大家好啊 ,欢迎来到鸽芷咕的个人频道。 🎬 鸽芷咕: 个人主页 🔥 个人专栏: 《快速入门C语言》 《C语言初阶篇》 文章目录 前言💬 scanf( ) 函数的介绍💬 scanf( )的俩种用法🌱示例一:⛳️输入…

【备战秋招】每日一题:华东师范大学保研机试-2022-Minimum_Sum

为了更好的阅读体检,可以查看我的算法学习博客在线评测链接:P1053 题目内容 你有一个序列,,...,,然后给你一些区间[l,r].对于每一个区间,你需要找到下式的最小值,对于所有可能的x 输入格式 第一行一个整数代表序列长度。 接下来一行有N个正整数,用空格隔开。 …

Ansys Speos | 2023R2 新功能介绍

Speos 2023R2 新功能集中在优化、交互设计、GPU的更新,Speos将提供嵌入界面的优化工具,简化Speos和optiSLang的联合优化,交互式实时预览提供无限方案探索,Block Recording块记录更加整洁清晰,GPU对Rayfile光源的支持满…

第九届“互联网+”大赛产业赛道百度命题正式公布!57道命题,等你揭榜!

2023年6月28日,中国国际“互联网”大学生创新创业大赛组委会正式发布了《关于公布第九届中国国际“互联网”大学生创新创业大赛产业命题赛道入选命题的通知》,百度共有五十七道命题成功入围产业赛道,入围数居全国前列。 中国国际“互联网”大…

InsCode Stable Diffusion 美图活动投稿

本地部署可以使用B站大佬秋叶的整合包 CSDN亦提供了Stable Diffusion 模型在线使用地址:https://inscode.csdn.net/inscode/Stable-Diffusion 模型相关版本和参数配置: 模型:cetusversion4.WRgK.safetensors [b42b09ff12] VAE:y…

Vivado_Cordic IP核使用详解

本文介绍Vivado中CORDIC V6.0的使用方法。 参考资料:pg105 文章目录 IP核配置CORDIC算法Vector RotationPolar to Rectangular Vector translationSin and CosSinh and CoshArcTanArcTanhSquare Root IP核配置 Configuration Options选项卡 Configuration Paramet…

银河麒麟服务器v10 sp1 安装 redis

1、下载redis安装包 https://download.redis.io/releases/ 本文下载redis-7.0.11.tar.gz包,请按照自己需求下载相应文件。 2、将下载后的.tar.gz压缩包上传到到服务器自定义文件夹下 本人上传为系统的下载文件夹下,可以直接上传至指定目录下&#xff…

Linux发行版Gentoo被发现有漏洞,在SQL注入方面存在安全风险

近日有消息表明,Gentoo Linux发行版中存在漏洞CVE-2023-28424,并且极有可能被黑客利用该漏洞进行SQL注入攻击。 据悉,研究人员从 GentooLinux的Soko搜索组件中找到了这个漏洞,并且该漏洞的CVSS风险评分为 9.1,属于特别…

两数相加问题

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 …

Linux 进程虚拟地址空间与虚拟内存

Linux 进程虚拟地址空间与虚拟内存 本文主要介绍Linux进程虚拟地址空间和虚拟内存的概念,学习可用物理内存中的页帧与所有的进程虚拟地址空间中的页之间的关联: 逆向映射(reverse mapping) 技术有助于从虚拟内存页追踪到对应的物…

ASS字幕 中的阴影 如何去除,三秒解决

有些外挂的ass字幕,总是自带一层浓浓的 阴影,看着就很不舒服,如下截图 解决方法: 鼠标右键,用记事本打开ass字幕文件,然后搜索关键字 ScaledBorderAndShadow,将其后面的 yes 改为 no&#xff0…

JSP在线小说系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 在线小说系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用ja…

C. Insert Zero and Invert Prefix - 构造+思维

分析: 数组b的最后一个元素永远不可能使1,因为即使在最后一个位置操作,也只会把前n-1个元素反转,最后一个元素只能为0.然后可以发现只要a[i]0就可以直接输出0,当a[i]1时一连串的1只需要最后一个1的位置改变成1的字串长…

微信小程序基础语法

微信小程序 文章目录 微信小程序[toc]一、初识微信小程序1.什么是微信小程序2.小程序可以做什么3.小程序与普通网页开发的区别 二、开发准备1.注册小程序开发账号2.安装开发者工具3.登陆我们的开发者工具 三、小程序构成1.小程序的基本组成结构2.小程序的页面组成结构3.小程序组…

OSI(开放系统互连参考模型)知识点详细介绍!!

开放系统互连参考模型分七层,从低到高是物理层,数据链路层,网络层,传输层,会话层,表示层和应用层 一.物理层(Physical Layer) 物理层位于 OSI/RM 参考模型的最底层,为数…

6.18、Java初级异常

1. 异常概述 1.1 什么是生活的异常 男主角小明每天开车上班,正常车程 1 小时。但是,可能会出现意外,出现意外,即为异常情况。我们会做相应的处理。如果不处理,到不了公司。 处理完了,就可以正常开车去公司…

浪涌保护器的标准和应用领域综合方案

浪涌保护器是一种用于防止电力系统或电子设备受到雷击或其他暂态过电压的损坏的装置。根据国家标准GB/T 18802.11-20201,低压电涌保护器 (SPD) 应符合IEC 61643-11:2011的性能要求和试验方法。浪涌保护器的产品参数包括:额定工作电压、最大连续工作电压、…

【kubernetes系列】kubernetes之kube-proxy的工作模式

概述 从kubernetes最早开始,kube-proxy到现在总共支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,iptables 模式从 v1.2 版本开始引入并作为kube-proxy 默认的操作模式。在kubernetes 1.8之后引入了ipvs模式&#xff…

!!!已解决: Linux操作系统登录,输入正确账号密码显示却显示:Sorry, that didn‘t work. Please try again.

!!!已解决: Linux操作系统登录,明明输入密码正确却显示:Sorry, that didn’t work. Please try again. 先给大家复现一下我的问题: 为什么出现这个问题??? …

知识梳理for CDGA/CDGP——第九章 ​文件和内容管理

第九章在CDGA分值占比较少,CDGP不考核,主要考点包括:定义、目标、原则、活动、工具、度量指标等基本概念、记住精心管理档案特点、GARP原则等。因此本章建议不需要花大量时间研究,熟悉历史真题,聚焦关键考点即可&#…