位置: IT常识 - 正文

Pytorch复习笔记--导出Onnx模型为动态输入和静态输入(pytorch基础教程)

编辑:rootadmin
Pytorch复习笔记--导出Onnx模型为动态输入和静态输入

目录

1--动态输入和静态输入

2--Pytorch API

3--完整代码演示

4--模型可视化

5--测试动态导出的Onnx模型


1--动态输入和静态输入

推荐整理分享Pytorch复习笔记--导出Onnx模型为动态输入和静态输入(pytorch基础教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:pytorch基础,pytorch技巧,pytorch技巧,pytorch基础,pytorch零基础入门,pytorch 快速入门,pytorch基础教程,pytorch基础教程,内容如对您有帮助,希望把文章链接给更多的朋友!

        当使用 Pytorch 将网络导出为 Onnx 模型格式时,可以导出为动态输入和静态输入两种方式。动态输入即模型输入数据的部分维度是动态的,可以由用户在使用模型时自主设定;静态输入即模型输入数据的维度是静态的,不能够改变,当用户使用模型时只能输入指定维度的数据进行推理。

        显然,动态输入的通用性比静态输入更强。

2--Pytorch APIPytorch复习笔记--导出Onnx模型为动态输入和静态输入(pytorch基础教程)

        在 Pytorch 中,通过 torch.onnx.export() 的 dynamic_axes 参数来指定动态输入和静态输入,dynamic_axes 的默认值为 None,即默认为静态输入。

        以下展示动态导出的用法,通过定义 dynamic_axes 参数来设置动态导出输入。dynamic_axes 中的 0、2、3 表示相应的维度设置为动态值;

# 导出为动态输入input_name = 'input'output_name = 'output'torch.onnx.export(model, input_data, "Dynamics_InputNet.onnx", opset_version=11, input_names=[input_name], output_names=[output_name], dynamic_axes={ input_name: {0: 'batch_size', 2: 'input_height', 3: 'input_width'}, output_name: {0: 'batch_size', 2: 'output_height', 3: 'output_width'}})3--完整代码演示

        在以下代码中,定义了一个网络,并使用动态导出和静态导出两种方式,将网络导出为 Onnx 模型格式。

import torchimport torch.nn as nnclass Model_Net(nn.Module): def __init__(self): super(Model_Net, self).__init__() self.layer1 = nn.Sequential( nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1), nn.BatchNorm2d(64), nn.ReLU(inplace=True), nn.Conv2d(in_channels=64, out_channels=256, kernel_size=3, stride=1, padding=1), nn.BatchNorm2d(256), nn.ReLU(inplace=True), ) def forward(self, data): data = self.layer1(data) return dataif __name__ == "__main__": # 设置输入参数 Batch_size = 8 Channel = 3 Height = 256 Width = 256 input_data = torch.rand((Batch_size, Channel, Height, Width)) # 实例化模型 model = Model_Net() # 导出为静态输入 input_name = 'input' output_name = 'output' torch.onnx.export(model, input_data, "Static_InputNet.onnx", verbose=True, input_names=[input_name], output_names=[output_name]) # 导出为动态输入 torch.onnx.export(model, input_data, "Dynamics_InputNet.onnx", opset_version=11, input_names=[input_name], output_names=[output_name], dynamic_axes={ input_name: {0: 'batch_size', 2: 'input_height', 3: 'input_width'}, output_name: {0: 'batch_size', 2: 'output_height', 3: 'output_width'}})4--模型可视化

        通过 netron 库可视化导出的静态模型和动态模型,代码如下:

import netronnetron.start("./Dynamics_InputNet.onnx")

        静态模型可视化:

         动态模型可视化:

5--测试动态导出的Onnx模型import numpy as npimport onnximport onnxruntimeif __name__ == "__main__": input_data1 = np.random.rand(4, 3, 256, 256).astype(np.float32) input_data2 = np.random.rand(8, 3, 512, 512).astype(np.float32) # 导入 Onnx 模型 Onnx_file = "./Dynamics_InputNet.onnx" Model = onnx.load(Onnx_file) onnx.checker.check_model(Model) # 验证Onnx模型是否准确 # 使用 onnxruntime 推理 model = onnxruntime.InferenceSession(Onnx_file, providers=['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider']) input_name = model.get_inputs()[0].name output_name = model.get_outputs()[0].name output1 = model.run([output_name], {input_name:input_data1}) output2 = model.run([output_name], {input_name:input_data2}) print('output1.shape: ', np.squeeze(np.array(output1), 0).shape) print('output2.shape: ', np.squeeze(np.array(output2), 0).shape)

         由输出结果可知,对应动态输入 Onnx 模型,其输出维度也是动态的,并且为对应关系,则表明导出的 Onnx 模型无误。

本文链接地址:https://www.jiuchutong.com/zhishi/295970.html 转载请保留说明!

上一篇:vue中使用wangeditor富文本编辑器(vue中使用require报错)

下一篇:图文详解vue.js devtools插件使用方法(图文详解一本通)

  • 淘宝亲属卡怎么开通(淘宝亲属卡怎么关闭)

    淘宝亲属卡怎么开通(淘宝亲属卡怎么关闭)

  • 电脑字体在哪个文件夹(电脑字体在哪个设置)

    电脑字体在哪个文件夹(电脑字体在哪个设置)

  • 手机处理器排名(手机处理器排名天梯图)

    手机处理器排名(手机处理器排名天梯图)

  • 抖音可以搜索电话号码吗(抖音可以搜索电视剧吗)

    抖音可以搜索电话号码吗(抖音可以搜索电视剧吗)

  • ipad微信怎么发送消息(iPad微信怎么发原图)

    ipad微信怎么发送消息(iPad微信怎么发原图)

  • 路由器要不要开NAT

    路由器要不要开NAT

  • 华为维修要不要发票

    华为维修要不要发票

  • 荣耀v30pro拍照模糊(荣耀v30pro拍照模糊怎么办)

    荣耀v30pro拍照模糊(荣耀v30pro拍照模糊怎么办)

  • 抖音为什么要安装多闪(抖音为什么安装不了游戏)

    抖音为什么要安装多闪(抖音为什么安装不了游戏)

  • 苹果系统尽量不更新吗(2021苹果系统尽量不更新吗)

    苹果系统尽量不更新吗(2021苹果系统尽量不更新吗)

  • 闲鱼直播怎么删除回放(闲鱼直播如何删除)

    闲鱼直播怎么删除回放(闲鱼直播如何删除)

  • 什么情况下qq显示离线(什么情况下qq显示2g在线)

    什么情况下qq显示离线(什么情况下qq显示2g在线)

  • z370兼容9代cpu吗(z370主板支持九代cpu吗?)

    z370兼容9代cpu吗(z370主板支持九代cpu吗?)

  • 钉钉人数上限(钉钉人数上限怎么进群)

    钉钉人数上限(钉钉人数上限怎么进群)

  • 苹果11长宽高是多少寸(苹果11长宽高是多少重量)

    苹果11长宽高是多少寸(苹果11长宽高是多少重量)

  • 无线适配器或访问点有问题未修复怎么解决(无线适配器或访问点有问题是什么意思)

    无线适配器或访问点有问题未修复怎么解决(无线适配器或访问点有问题是什么意思)

  • 荣耀20s和30s的区别(荣耀20好还是荣耀30s好)

    荣耀20s和30s的区别(荣耀20好还是荣耀30s好)

  • 哔哩哔哩概念版和原版的区别(哔哩哔哩概念版历史版本)

    哔哩哔哩概念版和原版的区别(哔哩哔哩概念版历史版本)

  • 电脑全屏退不出来怎么办(电脑不全屏了怎么恢复)

    电脑全屏退不出来怎么办(电脑不全屏了怎么恢复)

  • 荣耀手环4充电一次用多久(荣耀手环4充电充多长时间)

    荣耀手环4充电一次用多久(荣耀手环4充电充多长时间)

  • 地铁出站没刷卡怎么算(地铁出站没刷卡怎么补刷)

    地铁出站没刷卡怎么算(地铁出站没刷卡怎么补刷)

  • 手机闪存怎么看(手机的闪存如何查看)

    手机闪存怎么看(手机的闪存如何查看)

  • vivo手机怎么取消云相册(vivo手机怎么取卡出来)

    vivo手机怎么取消云相册(vivo手机怎么取卡出来)

  • 无线充电器伤手机吗(无线充电 损伤)

    无线充电器伤手机吗(无线充电 损伤)

  • 抖音直播心礼物多少钱一个(抖音 直播 礼物)

    抖音直播心礼物多少钱一个(抖音 直播 礼物)

  • 苹果8p能扩容吗(苹果8p能扩容吗多少钱)

    苹果8p能扩容吗(苹果8p能扩容吗多少钱)

  • nex分辨率怎么设置(nex s分辨率)

    nex分辨率怎么设置(nex s分辨率)

  • 美团怎么买会员红包(美团怎么买会员划算)

    美团怎么买会员红包(美团怎么买会员划算)

  • qq音乐免流量怎么退订(qq音乐免流量怎么激活2022)

    qq音乐免流量怎么退订(qq音乐免流量怎么激活2022)

  • 退款成功但是钱没到账(退款成功但是钱没到银行卡,反而银行卡余额没有了)

    退款成功但是钱没到账(退款成功但是钱没到银行卡,反而银行卡余额没有了)

  • 盒马鲜生怎么付款(盒马鲜生怎么付不了订单)

    盒马鲜生怎么付款(盒马鲜生怎么付不了订单)

  • 笔记本CPU正常温度控制技巧(笔记本cpu温度高如何处理)

    笔记本CPU正常温度控制技巧(笔记本cpu温度高如何处理)

  • 居民和非居民企业的概念
  • 减免税款会计分录
  • 发放上年年终奖个税
  • 金税盘是什么时候开始使用的
  • 征收率 税率 区别
  • 增值税征税范围中销售应税服务包括什么服务
  • 个人名字的发票专用章
  • 工程材料票抵扣比例
  • 现金日记账划线更正法
  • 股票交易印花税税率
  • 差额征税的财税处理怎么做?
  • 预付卡没用完的可以退吗
  • 私车公用违规吗
  • 劳保统筹费用
  • 补税款的分录应该怎么写
  • 个人经济纠纷
  • 到期一次还本付息债券
  • 预收款结转收入怎么算
  • 工资薪金支出税收额是什么意思
  • 售楼部沙盘制作价格一般多少一平
  • 怎么计算附加税税率
  • 出口退税 免税
  • 如何安装电脑系统win7电路连接
  • php 生成验证码
  • 虚拟存储器什么意思
  • 企业开发产品转为自用的,不得在税前扣除折旧费用
  • 销售过程的主要内容
  • php_fileinfo作用
  • 成本核算方法主要有哪些
  • 房地产开发企业涉及哪些税
  • 企业购进商品取得的现金折扣
  • 个人专利奖励是什么意思
  • php代码规范七大原则
  • 商业汇票转让后,能否追索前手
  • 长期待摊费用的会计分录
  • php filesize
  • cpu占满gpu不工作
  • pytorch nn.parameters
  • mla指令
  • 上下联的方法
  • 纳税人异地预缴所得税
  • mongodb快速入门
  • access日期时间格式怎么修改
  • 生育津贴到公司了公司什么时候发给个人
  • 营改增有关事项的规定
  • 印花税该是如何征收的
  • 房屋维修基金是谁交
  • 交耕地占用税如何交
  • 以前年度出口退税未收汇
  • 年初未分配利润借方增加还是减少
  • 劳务费用如何做账
  • 企业丢失专用发票税务机关如何处理
  • 商业会计主要做什么
  • 工程履约保证金退还申请书
  • 审计库存现金盘点表
  • 员工宿舍的物业费可以抵扣进项税吗
  • 当期不得免征和抵扣税额
  • 企业里面不征税的有哪些
  • 应付职工社会保险费计入什么科目
  • 企业和职工之间的财务关系属于
  • 小企业会计准则主要按照什么计量
  • sqlserver正则表达式替换列
  • win7怎么打开后缀
  • mac怎么f9
  • Win10 Insider 10565去除快捷方式小箭头的方法
  • ubuntu安装httpd
  • win8.1无法启动
  • win10系统怎样卸载程序
  • Windows 8中Hyper-V虚拟机操作应用的具体步骤
  • windows7 无线服务
  • unity 虚拟摇杆
  • 复制链接
  • javascript学习指南
  • 获取intent传递的数据
  • python魔法方法有啥用
  • 广西发票查询平台
  • 出租车开的发票如何查询校验码?
  • 甘肃增值税发票查验平台官网
  • 江苏食品经营许可证企业端官网
  • 核算成本需要哪些数据来源
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设