Pytorch模型转onnx模型实例


Posted in Python onJanuary 15, 2020

如下所示:

import io
import torch
import torch.onnx
from models.C3AEModel import PlainC3AENetCBAM

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

def test():
  model = PlainC3AENetCBAM()
 
  pthfile = r'/home/joy/Projects/models/emotion/PlainC3AENet.pth'
  loaded_model = torch.load(pthfile, map_location='cpu')
  # try:
  #   loaded_model.eval()
  # except AttributeError as error:
  #   print(error)

  model.load_state_dict(loaded_model['state_dict'])
  # model = model.to(device)

  #data type nchw
  dummy_input1 = torch.randn(1, 3, 64, 64)
  # dummy_input2 = torch.randn(1, 3, 64, 64)
  # dummy_input3 = torch.randn(1, 3, 64, 64)
  input_names = [ "actual_input_1"]
  output_names = [ "output1" ]
  # torch.onnx.export(model, (dummy_input1, dummy_input2, dummy_input3), "C3AE.onnx", verbose=True, input_names=input_names, output_names=output_names)
  torch.onnx.export(model, dummy_input1, "C3AE_emotion.onnx", verbose=True, input_names=input_names, output_names=output_names)

if __name__ == "__main__":
 test()

直接将PlainC3AENetCBAM替换成需要转换的模型,然后修改pthfile,输入和onnx模型名字然后执行即可。

注意:上面代码中注释的dummy_input2,dummy_input3,torch.onnx.export对应的是多个输入的例子。

在转换过程中遇到的问题汇总

RuntimeError: Failed to export an ONNX attribute, since it's not constant, please try to make things (e.g., kernel size) static if possible

在转换过程中遇到RuntimeError: Failed to export an ONNX attribute, since it's not constant, please try to make things (e.g., kernel size) static if possible的错误。

根据报的错误日志信息打开/home/joy/.tensorflow/venv/lib/python3.6/site-packages/torch/onnx/symbolic_helper.py,在相应位置添加print之后,可以定位到具体哪个op出问题。

例如:

在相应位置添加

print(v.node())

输出信息如下:

%124 : Long() = onnx::Gather[axis=0](%122, %121), scope: PlainC3AENetCBAM/Bottleneck[cbam]/CBAM[cbam]/ChannelGate[ChannelGate] # /home/joy/Projects/models/emotion/WhatsTheemotion/models/cbam.py:46:0

原因是pytorch中的tensor.size(1)方式onnx识别不了,需要修改成常量。

以上这篇Pytorch模型转onnx模型实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
python检查指定文件是否存在的方法
Jul 06 Python
Python实现二维有序数组查找的方法
Apr 27 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
Python查找文件中包含中文的行方法
Dec 19 Python
学习python分支结构
May 17 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
Python3实现英文字母转换哥特式字体实例代码
Sep 01 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 02 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 #Python
详解Python实现进度条的4种方式
Jan 15 #Python
pytorch常见的Tensor类型详解
Jan 15 #Python
pytorch 常用线性函数详解
Jan 15 #Python
python3.8下载及安装步骤详解
Jan 15 #Python
浅谈pytorch、cuda、python的版本对齐问题
Jan 15 #Python
pytorch模型预测结果与ndarray互转方式
Jan 15 #Python
You might like
剖析 PHP 中的输出缓冲
2006/12/21 PHP
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php判断是否为json格式的方法
2014/03/04 PHP
ucenter通信原理分析
2015/01/09 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
PJ Blog修改-禁止复制的代码和方法
2006/10/25 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
使用XML库的方式,实现RPC通信的方法(推荐)
2017/06/14 Python
Python管理Windows服务小脚本
2018/03/12 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python编写简单端口扫描器
2019/09/04 Python
python爬取代理ip的示例
2020/12/18 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
迷你分体式空调:SoGoodToBuy
2018/08/07 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
家长通知书家长评语
2014/04/17 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
技术入股合作协议书
2014/10/07 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技