Pytorch pth 格式转ONNX 格式的详细过程
作者:MYVision_ 发布时间:2021-08-29 05:15:28
标签:Pytorch,pth,ONNX
背景介绍
PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式
安装依赖库
所以就需要安装ONNX, 安装ONNX 具体的版本需要依赖于环境中的protobuf 和python版本,我的python版本是3.6.9
pip install onnx==1.11.0
pip install onnx-simplifier
安装ONNX 没问题,但是安装onnx-simplifier的时候,Jetson xaviar 上死活安装不成功
各种报错
但是,我换到windows 上和ubuntu 服务器上,就很正常的安装成功了
谁知道Jetson 上为什么安装失败的,可以私信我或评论区告诉我,感谢~
转换成onnx 格式
with torch.no_grad():
torch.onnx.export(
model,
example,
"init.onnx",
opset_version=11,
input_names=['input'],
output_names=['output'])
这样就能正常导出了
在Jetson XAVIAR 上运行时可能会报如下错误
Illegal instruction (core dumped)
执行下如下命令即可
export OPENBLAS_CORETYPE=ARMV8
ONNX 转换成TensorRT 格式
在Jetson 上通过trtexec 工具做转换
trtexec --onnx=init.onnx --saveEngine=init.trt --explicitBatch
发现转换时报如下错误:Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
所以需要通过onnx-simplifier 转换一下,转换命令如下
python -m onnxsim init.onnx init_sim.onnx
这样,就转换成功了,成功之后,后面就可以在TensorRT 上推理了
来源:https://blog.csdn.net/fengshengwei3/article/details/130615279


猜你喜欢
- hmac模块hmac模块用于生成HMAC码。这个HMAC码可以用于验证消息的完整性,其原理也很简单,就是一种加入了密钥的消息摘要,相比起MA
- 在html 5增加了新元素header、footer,测试过发现IE不能解析html 5新增的元素。代码如下:<!DOCTYPE&nb
- 我经常需要用Python与solr进行异步请求工作。这里有段代码阻塞在Solr http请求上, 直到第一个完成才会执行第二个请
- # -*- coding: utf-8 -*-class Heap(object): @classmet
- Gogland 是 JetBrains 公司推出的Go语言集成开发环境。Gogland 同样基于 IntelliJ 平台开发,支持 JetB
- Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的
- 0X01函数说明:python range() 函数可创建一个整数列表,一般用在 for 循环中。0X02函数语法:range(start,
- 前言pandas对数据框也可以像excel一样进行数据透视表整合之类的操作。主要是针对分类数据进行操作,还可以计算数值型数据,去满足复杂的分
- 1. 前言相信参与使用Oracle数据库进行项目开发、运维的同学常常被Oracle JDBC驱动的Maven依赖折磨。现在这一情况在今年二月
- 从MySQL 5.0 开始,支持了一个全新的SQL句法:PREPARE stmt_name FROM preparable_stmt;EXE
- 本文实例讲述了Python爬虫框架Scrapy常用命令。分享给大家供大家参考,具体如下:在Scrapy中,工具命令分为两种,一种为全局命令,
- 微信小程序之自定义底部弹出框动画,供大家参考,具体内容如下最近做小程序时,会经常用到各种弹框。直接做显示和隐藏虽然也能达到效果,但是体验性太
- 问题描述:ImportError: No module named ‘XXXX'解决方式一: 将XXXX包放在python的site
- 实例代码:import tkinter as tk import tkinter.filedialogimport cv2def choos
- 由于项目的需要在一个页面中选择打印内容。 把自己要打印的东西用一个DIV层抱起来。例如: <!-- 信访事项转办告知单Start --
- 1. Python的数据类型上一遍博文已经详细地介绍了Python的数据类型,详见链接Python的变量命名及数据类型。在这里总结一下Pyt
- 1.turtle库turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0
- mysql> select binary 'ABCD'='abcd' COM1, 'ABCD&
- requests模块是一个用于访问网络的模块,其实类似的模块还有很多,不在一一在这里解释。这么多的相似的模块为什么都说只有这个好用呢,因为他
- 1.事件简介事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理