【深度学习实战(18)】torch模型转onnx模型,使用netron根据查看onnx结构

devtools/2024/9/24 17:16:42/

一、ONNX介绍

简单来说,可以把ONNX当做一个中间格式。绝大多数的机器学习/深度学习框架都可以将自身的模型转换成ONNX,同样也能把ONNX转换成自身框架的格式,如下图所示。
在这里插入图片描述

二、转ONNX模型代码

import torch
import torchvision.models as modelsdevice = "cpu"# 加载预训练的ResNet18模型
model =models.resnet18(pretrained=True)
model.eval().to(device)# 定义输入
input = torch.zeros(1,3,224,224).to(device)torch.onnx.export(model,# 这里的args,是指输入给model的参数,需要传递tuple,因此用括号(input,),# 输出的onnx文件路径"resnet18.onnx",# 是否打印详细信息verbose=True,# 为输入和输出节点指定名称,方便后面查看或者操作input_names = ["image"],output_names = ["infer_output"],# 这里的opset,指各类算子以何种方式导出,对应于symbolic_opset11opset_version=11,# 表示它有batch,height,width3个维度是动态的,在onnx中给其赋值为-1# 通常,我们只设置batch为动态,其他避免动态dynamic_axes ={"image":{0:"batch"},  #  只有batch维是动态的"infer_output":{0:"batch"}   #  只有batch维是动态的# "train_output":{0:"batch"}   #  只有batch维是动态的}
)print("Done!")

在这里插入图片描述

三、使用netron工具查看ONNX模型结构

在这里插入图片描述

四、如何使用netron工具在本地直接查看服务器端的ONNX模型结构?

我们开发一般都在服务器中开发,假如我们在服务器端导出了一个onnx文件,不将onnx文件传到本地,如何进行本地查看呢?

netron --port 8082 --host 10.75.29.201 model_data/deeplab_0320.onnx
  • –host:指定服务器ip,注意不是本地的。使用ifconfig进行查看具体的ip
  • –port:指定 端口号,默认即可

在服务器的终端运行以上命令:
本地访问,提示的地址:http://10.0.8.21:8082就可以查看服务器端打开的onnx模型。


http://www.ppmy.cn/devtools/13158.html

相关文章

孩子如何才能学好Scratch

Scratch是一种适合孩子学习编程的可视化编程语言,它通过拖拽积木式的编程方式,让孩子能够轻松地学习编程概念。以下是一些建议,可以帮助孩子更好地学习Scratch: 熟悉Scratch界面和基本功能 首先,让孩子熟悉Scratch的…

四川企业携手精益生产咨询公司:转型升级,共赢未来

四川,这片孕育了无数商业传奇的土地,如今正迎来一场由精益生产引领的转型升级浪潮。为了在激烈的市场竞争中保持领先地位,越来越多的四川企业选择与精益生产咨询公司携手合作,共同探索提升生产效率、降低成本的路径。 精益生产&am…

大数据学习第四天

文章目录 yaml 三大组件的方式交互流程hive 使用安装mysql(hadoop03主机)出现错误解决方式临时密码 卸载mysql (hadoop02主机)卸载mysql(hadoop01主机执行)安装hive上传文件解压解决版本差异修改hive-env.sh修改 hive-site.xml上传驱动包初始化元数据在hdfs 创建hive 存储目录启…

pytorch-trainvaltest划分

目录 1. 上一节回顾2. 数据集划分3. 完整代码 1. 上一节回顾 下列图中三种曲线分别代表了欠拟合、好的拟合和过拟合 下图为过拟合曲线,那么如何来检测过拟合呢?将数据集划分为train和val(validation)val是用来测试训练过程是否过…

Spring AI

Spring AI 文章目录 Spring AI关于 Spring AI使用Spring CLISpring Initializr添加 Milestone 和 Snapshot Repositories依赖管理为特定组件添加依赖项Embeddings ModelsChat ModelsImage Generation ModelsVector Databases 示例工程 关于 Spring AI github : https://github…

【SpringBoot实战篇】获取用户详细信息-ThreadLocal优化

1 分析问题 对token的解析当初在拦截器中已经写过。期待的是在拦截器里写了,在其他地方就不写了,应该去复用拦截器里面得到的结果 2 解决方式-ThreadLocal 2.1提供线程局部变量 用来存取数据: set()/get()使用ThreadLocal存储的数据, 线程安全 2.2过程图…

C++ | Leetcode C++题解之第46题全排列

题目&#xff1a; 题解&#xff1a; class Solution { public:void backtrack(vector<vector<int>>& res, vector<int>& output, int first, int len){// 所有数都填完了if (first len) {res.emplace_back(output);return;}for (int i first; i &…

力扣刷题 70.爬楼梯

题干 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…