【netron】模型可视化工具netron

1、简介

在实际的项目中,经常会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,简单好用。


2、使用方式

这里介绍两种使用方式: 1、使用在线版; 2、下载本地版

1)使用在线版

浏览器访问:https://lutzroeder.github.io/netron/
点击 “Open Model” 按钮,选择要可视化的模型文件即可

在这里插入图片描述

2)下载本地版

终端进行进行安装: pip install netron
安装完成后,在脚本中 调用包 import netron
运行程序 netron.start("model.onnx"), 会自动打开浏览器进行可视化 (最后有例子)


3、支持的网络框架 和 模型文件类型

(1)支持的框架及对应的文件
在这里插入图片描述

(2)实验式支持,可能不太稳定
在这里插入图片描述

我习惯用 pytorch,但是 netron 对 pytorch.pt.pth 文件不是很友好,所以,我都是先转换为 onnx 格式,再进行可视化,下面举例。


4、举例

一般情况下,netron 只展示最初的输入尺寸 和 最后的输出尺寸,中间层的输入输出尺寸都是不展示的(如下)。

在这里插入图片描述
可以同过 onnx.save(onnx.shape_inference.infer_shapes(onnx.load("model.onnx")), "model.onnx") 进行处理。这样中间的每一层的输入输出就都会推理出 并可视化出来了。 (谁有简便方法,评论区留言)

python">import torch
import torch.nn as nn
import netron
import onnx
from onnx import shape_inference


class My_Net(nn.Module):
    def __init__(self):
        super(My_Net, self).__init__()
        self.layer1 = nn.Sequential(
            nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1, bias=False),
            nn.BatchNorm2d(16),
            nn.LeakyReLU(),
        )

        self.layer2 = nn.Sequential(
            nn.Conv2d(16, 32, kernel_size=1, bias=False),
            nn.BatchNorm2d(32),
            nn.LeakyReLU(),
        )

    def forward(self, x):
        x = self.layer1(x)
        x = self.layer2(x)
        return x


net = My_Net()
img = torch.rand((1, 3, 224, 224))
torch.onnx.export(model=net, args=img, f='model.onnx', input_names=['image'], output_names=['feature_map'])
onnx.save(onnx.shape_inference.infer_shapes(onnx.load("model.onnx")), "model.onnx")
netron.start("model.onnx")

在这里插入图片描述


http://www.niftyadmin.cn/n/155901.html

相关文章

通用后台管理系统a版本-前端搭建

一 背景 基于vuespringboot 搭建一套通用管理后台 主要包括用户管理模块、权限模块、菜单模块, 项目代码 https://gitee.com/weiwei20180921/commonadmin-front-a 二 环境信息 2.1 前端工具版本 2.1.1 npm 版本 PS D:\front> npm -v 8.5.0PS D:\front> npm config g…

常用的加密算法

一、对称加密所谓的对称加密就是加密跟解密使用同一把密钥常见的对称加密算法有AES,DES等等,下面以DES加密算法为例Java语言实现DES加密:Java语言实现DES解密:对于不同的对称加密算法,密钥的位数是不同的。对于DES加密…

【前端】深入浅出缓存原理

缓存的基本原理 对于前端来说,缓存主要分为浏览器缓存(比如 localStorage、sessionStorage、cookie等等)以及http缓存,也是本文主要讲述的。 当然叫法也不一样,比如客户端缓存大概包括浏览器缓存和http缓存 所谓htt…

Linux命令大全:掌握常用命令,轻松使用Linux操作系统

目录前言一、cd命令二、pwd命令三、ls命令四、cp命令五、mv命令六、rm命令七、cat命令八、find命令九、chmod命令十、chown命令十一、chgrp命令十二、grep命令十三、paste命令十四、sort命令十五、comm命令十六、tar命令16-1、参数介绍16-2、tar.bz2格式文件16-3、tar.gz格式文…

vue3+ts 之echarts 水球图 liquidFill 的使用

vue3ts 之echarts 水球图 liquidFill 的使用前言一、echarts liquidfill.js水球图插件二、使用步骤1.上代码总结前言 项目框架使用的是 vben 语言用的是 vue3ts 业务需求需要在页面中使用水球图,在此记录 echarts 图表中的水球图 看下效果 ~ 写在前面 : 项目中本身已经用了 …

【华为OD机试真题 JAVA】TLV编码问题

标题:TLV编码问题 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 TLV编码是按TagLengthValue格式进行编码的,一段码流中的信元用tag标识,tag在码流中唯一不重复,length表示信元value的长度,value表示信元的值,码流以某信元的tag开头,tag固定占一个字节,lengt…

ISO9001质量管理体系认证全过程介绍

ISO9001质量管理体系认证全过程介绍 ISO9001质量管理体系是被全球认可的质量管理体系标准。ISO9001是国际标准化组织融合现代管理学最新的理念精华,推出的最新质量管理体系标准,更加适用于各种类型、各种行业的组织。ISO9001为组织提供了一种切实可行的…

Vue中实现路由跳转的三种方式详细分解

vue中实现路由跳转的三种方式 目录 vue中实现路由跳转的三种方式 一、使用vue-router 1.下载vue-router模块到当前工程 2.在main.js中引入VueRouter函数 3.添加到Vue.use()身上 – 注册全局RouterLink和RouterView组件 4.创建路由规则数组 – 路径和组件名对应关系 5…