Pytorch pth 格式转ONNX 格式的详细过程

 更新时间:2023年05月18日 09:29:37   作者:MYVision_ MY视界  
PyTorch 训练的模型,需要在Jetson nano 上部署,jetson 原生提供了TensorRT 的支持,所以一个比较好的方式是把它转换成ONNX 格式,然后在通过ONNX 转换成TensorRT 格式,这篇文章主要介绍了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 上推理了

到此这篇关于Pytorch pth 格式转ONNX 格式的文章就介绍到这了,更多相关Pytorch pth 转ONNX 格式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pytest进阶教程之fixture函数详解

    pytest进阶教程之fixture函数详解

    这篇文章主要给大家介绍了关于pytest进阶教程之fixture函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 教你使用pyinstaller打包Python教程

    教你使用pyinstaller打包Python教程

    今天带大家学习使用pyinstaller打包Python,文中有非常详细的图文示例及代码,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Python Pytorch学习之图像检索实践

    Python Pytorch学习之图像检索实践

    随着电子商务和在线网站的出现,图像检索在我们的日常生活中的应用一直在增加。图像检索的基本本质是根据查询图像的特征从集合或数据库中查找图像。本文将利用Pytorch实现图像检索,需要的可以参考一下
    2022-04-04
  • Python实现带参数的用户验证功能装饰器示例

    Python实现带参数的用户验证功能装饰器示例

    这篇文章主要介绍了Python实现带参数的用户验证功能装饰器,结合实例形式分析了Python用户验证装饰器具体定义及使用技巧,需要的朋友可以参考下
    2018-12-12
  • python处理“&#”开头加数字的html字符方法

    python处理“&#”开头加数字的html字符方法

    在本篇文章里小编给大家整理了关于python如何处理“&#”开头加数字的html字符的相关知识点总结,有兴趣的朋友们学习下。
    2019-06-06
  • python使用xlsx和pandas处理Excel表格的操作步骤

    python使用xlsx和pandas处理Excel表格的操作步骤

    python的神器pandas库就可以非常方便地处理excel,csv,矩阵,表格 等数据,下面这篇文章主要给大家介绍了关于python使用xlsx和pandas处理Excel表格的操作步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-01-01
  • python mysql实现学生成绩管理系统

    python mysql实现学生成绩管理系统

    这篇文章主要为大家详细介绍了python mysql实现学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • python实现数据清洗(缺失值与异常值处理)

    python实现数据清洗(缺失值与异常值处理)

    今天小编就为大家分享一篇python实现数据清洗(缺失值与异常值处理),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • keras回调函数的使用

    keras回调函数的使用

    本文主要介绍了keras回调函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Python3.5 Json与pickle实现数据序列化与反序列化操作示例

    Python3.5 Json与pickle实现数据序列化与反序列化操作示例

    这篇文章主要介绍了Python3.5 Json与pickle实现数据序列化与反序列化操作,结合实例形式分析了Python3.5使用Json与pickle模块实现json格式数据的序列化及反序列化操作相关步骤与注意事项,需要的朋友可以参考下
    2019-04-04

最新评论