PyTorch模型的多种导出方式提供给其他程序使用

news2024/10/6 6:51:58

PyTorch模型的多种导出方式提供给其他程序使用

flyfish

PyTorch模型的多种导出方式

  • PyTorch模型的多种导出方式提供给其他程序使用
    • 1 模型可视化
    • 2 预训练模型
    • 3 ONNX模型导出有输入有输出
      • TRAINING导出方式
      • EVAL导出方式
    • 4 自定义输入输出的名字,并可批量推理
    • 5 导出JIT模型

1 模型可视化

以下使用模型可视化工具时netron

工具下载到本地
https://github.com/lutzroeder/netron/releases/
或者在使用
https://netron.app/

2 预训练模型

当下载一个预训练模型时,只是一个一个的module
在这里插入图片描述

3 ONNX模型导出有输入有输出

import torch
import torchvision

if __name__ == '__main__':
    input = torch.randn(1, 3, 224, 224)        
    model = torchvision.models.resnet18()                          
    model.load_state_dict(torch.load("resnet18-f37072fd.pth")) 
    model.eval()                               
    torch.onnx.export(model, input, "a.onnx", training=torch.onnx.TrainingMode.TRAINING) 
    torch.onnx.export(model, input, "b.onnx", training=torch.onnx.TrainingMode.EVAL) 

TRAINING导出方式

算子没有融合
在这里插入图片描述

EVAL导出方式

在这里插入图片描述
当采用EVAL方式进行模型导出的时候,Conv和BatchNorm层进行了合并

4 自定义输入输出的名字,并可批量推理

import torch
import torchvision

if __name__ == '__main__':

	model = torchvision.models.resnet18()                          
	model.load_state_dict(torch.load("resnet18-f37072fd.pth")) 
	model.eval()                               


	batch_size = 4 
	input_data = torch.randn(batch_size, 3, 224, 224)

	output_path = "c.onnx"
	torch.onnx.export(model, input_data, output_path,
		          input_names=["input"], output_names=["output"],
		          dynamic_axes={"input": {0: "batch_size"}, "output": {0: "batch_size"}})

在这里插入图片描述

5 导出JIT模型

JIT(Just-In-Time)
在Yolov5中叫torchscript

import torch
import torchvision

if __name__ == '__main__':

	model = torchvision.models.resnet18()                          
	model.load_state_dict(torch.load("resnet18-f37072fd.pth")) 
	model.eval()                               
	input = torch.rand(1, 3, 224, 224)
	jit_model = torch.jit.trace(model, input)
	torch.jit.save(jit_model, 'resnet18_jit.trace.pth')

	#script_model = torch.jit.script(model, input)
	#torch.jit.save(script_model, 'resnet18_jit.script.pth')

在这里插入图片描述
本文使用的PyTorch版本 1.10.1

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

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

相关文章

PyG两个data Datsaset v.s. InMemoryDataset

可以看到InMemoryDataset 对CPU更加友好 https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#pytorch-lightning-wrappers

Linux下C++编程-进度条

引言&#xff1a;本篇主要在linux下的C实现进度条的功能。按照多文件编程&#xff0c;同时使用Makefile文件完成多文件的编译、连接。 首先创建头文件&#xff1a; 1. progress.h #pragma once #include <iostream> #include <cstring> #include <iomanip>…

Navicat定时任务

Navicat定时任务 1、启动Navicat for MySQL工具&#xff0c;连接数据库。 2、查询定时任务选项是否开启 查询命令&#xff1a;SHOW VARIABLES LIKE ‘%event_scheduler%’; ON表示打开&#xff0c;OFF表示关闭。 打开定时任务命令 SET GLOBAL event_scheduler 0; 或者 SET G…

elasticsearch 8.5.3问题记录

一&#xff1a;解决 elasticsearch 高版本 warning: ignoring JAVA_HOMEC:\Program Files\Java\jdk-11&#xff1b; using bundled JDK if defined JAVA_HOME (set JAVA_HOME%JAVA_HOME%; )示例版本Elasticsearch 8.5.3 可以与 JDK 11 兼容&#xff0c;但不支持 JDK 17。确保选…

离散数学 期末复习

离散数学 期末复习 图片过多&#xff0c;若无法显示&#xff0c;请转至 https://chenhaotian.top/study/discrete-mathematics-final-review/ 访问全文 发布于 2023-06-18 第 1 章 命题逻辑 1.2 等值演算 真值表法 等值演算法 题&#xff1a;等值演算 题&#xff1a;等值演…

python 学习随笔 5

函数 在python中&#xff0c;函数也是对象。 def func():""" 这是文档字符串"""print("Hello World")fun带参数函数 函数和变量注解 def calc(a:int, b:int) -> int: # 为函数的形参和返回值标注类型return a b print(calc(1,3…

C语言重点突破(2)指针(三)

本章重点 1. 函数指针 2. 函数指针数组3. 指向函数指针数组的指针 4. 回调函数 1.函数指针 首先可以明确的是&#xff0c;函数指针和数组指针的类型都是指针类型&#xff0c;用来存放地址的&#xff0c;数组指针存放数组的地址&#xff0c;而函数指针存放的便是函数的地址。 …

ESPHome 通过http获取设备的状态

substitutions: { desc: 传感器, devicename: sensor }esphome:name: $devicenameplatform: ESP8266board: nodemcuv2arduino_version: latest# Enable logging logger:# Enable Home Assistant API api:encryption:key: "MhXiJqKKyCXTqjZWqtegaP1tQSUpPtbnXP9iV1i2TzE&qu…

SSM - Springboot - MyBatis-Plus 全栈体系(二十四)

第五章 SSM 二、SSM 整合配置实战 1. 依赖整合添加 1.1 数据库准备 依然沿用 mybatis 数据库测试脚本&#xff01; CREATE DATABASE mybatis-example;USE mybatis-example;CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIM…

视频号双11激励政策,快来看一看

双十一即将来临&#xff0c;不少平台都公布了自己的双十一政策。这篇文章&#xff0c;我们来看看视频号推出的激励政策&#xff0c;看有哪些需要准备的。

var、const、let的区别

目录 一、作用域 二、变量提升&#xff08;Hoisting&#xff09; 三、重复声明 四、 赋值和重新赋值 五、全局对象属性 六、使用场景 七、声明和赋值的数据类型 一、作用域 var 声明的变量在函数作用域内有效&#xff0c;如果在函数外声明&#xff0c;它将成为全局变量…

C++-Mongoose(3)-http-server-https-restful

1.url 结构 2.http和 http-restful区别在于对于mg_tls_opts的赋值 2.1 http和https 区分 a) port地址 static const char *s_http_addr "http://0.0.0.0:8000"; // HTTP port static const char *s_https_addr "https://0.0.0.0:8443"; // HTTP…

Springboot全局异常和自定义异常

目录 依赖 一、全局异常处理 1、系统异常 2、业务异常 &#xff08;1&#xff09;、接口配置 &#xff08;2&#xff09;、服务配置 二、自定义异常 依赖 <!-- validator&#xff0c;用于接口参数校验 --><dependency><groupId>org.hibernate.valida…

淘宝京东拼多多品牌价格监控API接口

淘宝、京东、拼多多品牌价格监控API接口需要从官方平台获取&#xff0c;以下是具体步骤&#xff1a; 登录京东、天猫、淘宝、拼多多、苏宁、国美、唯品会等电商平台&#xff0c;注册并获取开发者账号和API接口权限。通过开发者账号和API接口权限&#xff0c;访问京东、天猫、淘…

linux中单节点安装greenplum数据库

目录 一、安装包准备 二、关闭防火墙 三、安装greenplum依赖包 四、添加配置 五、新建greenplum用户 六、安装greenplum安装包 七、设置环境变量 八、权限互通 九、修改数据库配置文件 十、初始化数据库 十一、配置远程连接文件 十二、说明 一、安装包准备 下载准备…

Windows网络管理及诊断命令整理

目录 traceroute&#xff1a; ping&#xff1a; pathping: netstat: ipconfig&#xff1a; nslookup&#xff1a; route&#xff1a; ARP: FTP: netsh&#xff1a; nbtstat&#xff1a; sniffer(嗅探器)&#xff1a; winipcfg&#xff1a; traceroute&#xff1a; …

【无公网IP内网穿透】基于NATAPP搭建Web站点

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《.内网穿透》。&#x1f3af;&#x1f3af; &#…

读书笔记:多Transformer的双向编码器表示法(Bert)-4

多Transformer的双向编码器表示法 Bidirectional Encoder Representations from Transformers&#xff0c;即Bert&#xff1b; 第二部分 探索BERT变体 从本章开始的诸多内容&#xff0c;以理解为目标&#xff0c;着重关注对音频相关的支持&#xff08;如果有的话&#xff09;…

Nginx、Git、Gitee的介绍及使用

目录 1、项目启动思路 2、Nginx 一、下载Nginx 1、下载地址 2、选择下载稳定版本 3、解压安装包 二、Nginx的原理 1、原理图 2、流程分析 三、配置Nginx 1、第一步&#xff1a;解决各种js报错 2、第二步&#xff1a;配置Nginx 3、启动/停止/重启Nginx 4、访问网址 …

企业信息查询:洞悉市场,抢占先机

随着互联网的普及和信息技术的不断发展&#xff0c;我们对于企业工商信息的需求逐渐增加&#xff0c;市面上也出现了很多查询企业信息的产品。作为一家专业的企业数据提供商&#xff0c;经过精心地研发&#xff0c;我们打造了一款“公抓抓”&#xff0c;该平台可以批量爬取国家…