神经网络模型模型转ONNX

近期由于业务需要,需要将训练好的模型转为ONNX格式,为此颇费了一番功夫,在此总结一下吧。。

1、ONNX是一种神经网络模型保存的中间格式,支持多种格式的模型转为ONNX,也支持使用ONNX导入多种格式的模型,具体见https://github.com/onnx/tutorials;目前其实ONNX对于模型的支持还不是太好,主要表现在一些op还不能够支持;

2、在PyTorch下要将模型保存成ONNX格式需要使用torch.onnx.export()函数,使用该函数的时候需要传入下面参数:

  --model:待保存的model,也就是你在程序中已经训练好或者初始化好的模型

  --input_shape:指定输入数据的大小,也就是输入数据的形状,是一个包含输入形状元组的列表;

  --name:模型的名称,即模型的保存路径;

  --verbrose:True或者False,用来指定输出模型时是否将模型的结构打印出来;

  --input_names:输入数据节点的名称,数据类型为包含字符串的列表;一般将这个名称设为['data'];

  --output_names:输出数据节点的名称,类型与输入数据的节点名称相同;

  在成功导出模型后,可以使用ONNX再对模型进行检查:

import onnx# Load the ONNX model
model = onnx.load("alexnet.onnx")# Check that the IR is well formed
onnx.checker.check_model(model)# Print a human readable representation of the graph
onnx.helper.printable_graph(model.graph)

目前PyTorch还不支持导入ONNX格式的模型。

3、使用MXNET导出模型为ONNX时,参考地址:https://cwiki.apache.org/confluence/display/MXNET/ONNX,http://mxnet.incubator.apache.org/versions/master/tutorials/onnx/export_mxnet_to_onnx.html。MXNet模型的保存格式为.json文件+.params文件,.json文件里保存的是模型的结构,.params文件中保存的是模型的参数。使用onnx_mxnet.export_export_model()方法就可以实现将模型从mxnet转为ONNX格式,该方法需要传入的参数为:

  --sym:.json文件,也就是保存了网络结构的文件

  --params:参数文件

  --input_shape:输入数据的形状,是一个包含形状元组的列表

  --input_type:输入数据的类型;

  --模型的保存路径

4、从MXNet导入ONNX格式模型:需要使用mxnet.contrib.onnx.onnx2mx.import_model.import_model(model_file),这里返回的是sym, arg_arams,aux_params,也就是网络结构symbol对象,保存参数的字典, 再将其转为MXNet的module对象(使用mxnet.module.Module()),即可将模型恢复到mxnet框架下可执行的模型。

 

最后,好久没有记录日常学习积累的东西了,趁着失眠开个好头吧,晚安。。。

转载于:https://www.cnblogs.com/puheng/p/10873289.html

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

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

相关文章

10个值得关注的优秀CSS框架

大多数做过网页设计的都知道“CSS框架”,而且肯定有很多设计师已经开始在作品中使用CSS框架。 就像其他编程语言一样,CSS也可以把一些重复使用的代码整合起来,这样可以减轻很多的工作量。 恰当地利用CSS框架可以缩短开发时间,不过…

linux服务器 版本 比例,Linux比例近半 服务器操作系统混战开始

一项为期半年的虚拟化调查表明,企业普遍存在多种服务器操作系统混用的情况;受IT投资环境的影响,IT经理们现在更加重视服务器资源利用率。据了解,根据不同应用的特点,大多数企业都在数据中心中同时使用了多种操作系统&a…

[html] 如何在页面打开PDF文件?

[html] 如何在页面打开PDF文件? 移动端如果是安卓的不太能实现直接打开PDF文件,需要使用pdfjs将pdf转换成canvas,再在页面上展示个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎…

ora01031权限不足linux,ORA-01031:权限不足

问题描述:ORA-01031:权限不足我用scott用户创建了一个存储过程,创建成功后我调用改存储过程,就提示我权限不足,是怎么回事锕 ,有谁帮解决一下下锕我的存储过程如下:create or replace procedure xu_create isv_a varchar2(20):&输入表名称;v_b varchar2(20):&am…

解决firebug报“illegal character错误的问题

项目中的一个js文件在firefox中总报“illegal character"错误,而且firebug中显示js文件的首字符有乱码。 用notepad2打开js文件查看编码,当前是UTF-8(含bom),更改为UTF-8 后运行正常。转载于:https://www.cnblogs…

[html] 如何阻止屏幕旋转时自动调整字体的大小?

[html] 如何阻止屏幕旋转时自动调整字体的大小? html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 { -webkit-text-size-adjust:100%; }个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家…

arp保持时间 linux,Linux实现ARP缓存老化时间原理问题深入解析

一.问题众所周知,ARP是一个链路层的地址解析协议,它以IP地址为键值,查询保有该IP地址主机的MAC地址。协议的详情就不详述了,你可以看RFC,也可以看教科书。这里写这么一篇文章,主要是为了做一点记录&#xf…

[html] html5中的meta标签http-equiv属性有什么作用?

[html] html5中的meta标签http-equiv属性有什么作用&#xff1f; http-equiv是http5新增的属性&#xff0c;用于把 content 属性关联到 HTTP 头部&#xff0c;可模拟响应头。例如&#xff1a;content-type: 声明网页字符编码<meta http-equiv"content-Type" cont…

[html] 在HTML5中,用于获得用户的当前位置是哪个方法?

[html] 在HTML5中&#xff0c;用于获得用户的当前位置是哪个方法&#xff1f; getCurrentPosition&#xff08;&#xff09;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前…

checkboxlist与数组结合用的技

今天看到一个checkboxlist与数组结合用的技巧。用户自定义控件.ascx页面有一个SqlDataSource数据源&#xff0c;还有一个Checkboxlist控件。下面来看看.cs里的关键代码了&#xff1a;public string SelectedValue { get { string s "";…

转Akka是什么?

可扩展的实时事务处理 我们相信编写出正确的、具有容错性和可扩展性的并发程序太困难了。这多数是因为使用了错误的工具和错误的抽象级别。Akka就是为了改变这种状况而生的。通过使用Actor模型我们提升了抽象级别&#xff0c;为构建可扩展的、有弹性的响应式并发应用提供了一个…

[html] 说说你对HTML5中“一次编写,全体使用”的理解

[html] 说说你对HTML5中“一次编写&#xff0c;全体使用”的理解 这个有点组件化的意思&#xff1f;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

linux 添加path环境变量中,在Linux里设置环境变量PATH的方法是什?

我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下&#xff0c;build_tools就是我的编译工具&#xff0c;则有如下三种方法来设置环境变量&#xff1a;1、直接用export命令&#xff1a;#export PATH$PATH:/opt/au1200_rm/build_tools/bin查看是否已经设好&a…

C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十一)地图遮罩层的实现

前面的章节主要针对地图表现层进行讲解。通常来说&#xff0c;简单的游戏光有它就足够了&#xff1b;但是为了达到更加真实的光影效果&#xff0c;模拟真实的虚拟世界&#xff0c;我们还得继续在地图上下大工夫。本节将就如何实现地图中的遮罩层&#xff0c;即物体对角色的遮挡…

gitlab自带的Nginx与原Nginx冲突的解决方案

gitlab 推荐方案2 默认情况下&#xff0c;gitlab使用自带的Nginx&#xff0c;占用80端口&#xff0c;这样就与系统原本安装的Nginx冲突。导致其中一个nginx无法启动 我的gitlab可以正常启动&#xff0c;当再部署一个接口文档的项目时&#xff0c;发现原nginx无法启动&#xff0…

[html] 本地存储和cookie之间的区别是什么?

[html] 本地存储和cookie之间的区别是什么&#xff1f; 1.储存数据的大小不一样 2.cookie会被每次携带在请求中&#xff0c;而storage不会&#xff0c;只会存储在客户端。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷…

linux vue node占用内存过大,vue 大型应用内存泄漏改造经验

VUE项目内存泄漏&#xff1a;场景1&#xff1a;页面结构复杂&#xff0c;内嵌子组件数量较多场景2&#xff1a;高频使用(切换路由导致页面组件销毁创建过多)结果&#xff1a;页面卡顿且浏览器窗口占用内存较高检测&#xff1a;相信不少前端开发在界面结构复杂的VUE大项目或者高…

【python+selenium自动化】使用pytest+allure2完成自动化测试报告的输出

pytest的pytest-html插件是一个很方便的测试报告&#xff0c;运行自动化测试用例时&#xff0c;pytest后加上参数即可 allure是一个测试报告的框架&#xff0c;相比pytest-html的优势就是“逼格” 他的优点除了好看&#xff0c;还有几点&#xff1a; 1、可以把测试的步骤都加到…

windows2008配置来

windows2008配置来 <启用主题> 进入服务面板启用therms服务 <取消必须输入密码登录系统的方法>“运行”中输入&#xff1a;“gpedit.msc“&#xff0c;“计算机配置”→“WINDOWS设置”→“安全设置”→“帐户策略”→“密码策略”。在这个路径下找到“密码必须符合…

[html] 使用svg画出一个矩形

[html] 使用svg画出一个矩形 <svg width"400" height"200" viewbox"0 0 2000 1000"><rect x"200" y"100" width"400" height"200" style"fill: blue"></rect> </svg&g…