位置: 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插件使用方法(图文详解一本通)

  • 抖音福袋只能主播发吗(抖音福袋只能主播手机发么)

    抖音福袋只能主播发吗(抖音福袋只能主播手机发么)

  • 携程候补抢票可以抢到吗(携程候补抢票可以取消吗)

    携程候补抢票可以抢到吗(携程候补抢票可以取消吗)

  • 压缩包损坏无法解压怎么办(压缩包损坏无法打开)

    压缩包损坏无法解压怎么办(压缩包损坏无法打开)

  • 华为手机拉黑后会收到短信吗(华为手机拉黑后不想看到对方短信,怎么办?)

    华为手机拉黑后会收到短信吗(华为手机拉黑后不想看到对方短信,怎么办?)

  • 苹果6s还原后激活出错(苹果6s还原后激活未能完成,请恢复手机)

    苹果6s还原后激活出错(苹果6s还原后激活未能完成,请恢复手机)

  • qq里面的草莓标识怎么来的(qq里的草莓怎么弄)

    qq里面的草莓标识怎么来的(qq里的草莓怎么弄)

  • 微信里的电话号码怎么设置(微信里的电话号码怎么隐藏起来)

    微信里的电话号码怎么设置(微信里的电话号码怎么隐藏起来)

  • 黑鲨3可以当日常机吗(黑鲨3s手机可以当日常使用手机吗)

    黑鲨3可以当日常机吗(黑鲨3s手机可以当日常使用手机吗)

  • pdf用office哪个打开(pdf文件用什么软件打印好)

    pdf用office哪个打开(pdf文件用什么软件打印好)

  • iphone照片无法删除(iphone照片无法删除,截图也无法保存)

    iphone照片无法删除(iphone照片无法删除,截图也无法保存)

  • oppo屏幕点不动了怎么强制关机(oppo屏幕点不动了)

    oppo屏幕点不动了怎么强制关机(oppo屏幕点不动了)

  • oppo摄像头被占用(oppo摄像头被占用了怎么解决)

    oppo摄像头被占用(oppo摄像头被占用了怎么解决)

  • win10ip地址错误修复不了(window10ip地址错误解,网络无法接通)

    win10ip地址错误修复不了(window10ip地址错误解,网络无法接通)

  • 为什么计算机会出现错误(为什么计算机会计处理中要对会计科目采用数字编码)

    为什么计算机会出现错误(为什么计算机会计处理中要对会计科目采用数字编码)

  • ipadair3充电慢是什么原因(ipad air充电慢)

    ipadair3充电慢是什么原因(ipad air充电慢)

  • qq大会员黄钻和会员会亮吗(qq黄钻和qq会员有什么区别)

    qq大会员黄钻和会员会亮吗(qq黄钻和qq会员有什么区别)

  • 微信非对方朋友为什么还能发信息(微信非对方朋友只显示十条朋友圈怎么设置)

    微信非对方朋友为什么还能发信息(微信非对方朋友只显示十条朋友圈怎么设置)

  • 苹果oled屏幕伤眼睛吗(苹果oled屏幕伤不伤眼)

    苹果oled屏幕伤眼睛吗(苹果oled屏幕伤不伤眼)

  • xr几个喇叭响(苹果手机xr几个喇叭响)

    xr几个喇叭响(苹果手机xr几个喇叭响)

  • 抖音个人认证有什么用(抖音个人认证有风险吗)

    抖音个人认证有什么用(抖音个人认证有风险吗)

  • 手机进水后屏幕失灵怎么办(手机进水后屏幕黑了一块)

    手机进水后屏幕失灵怎么办(手机进水后屏幕黑了一块)

  • wps么不能分享文件了(wps怎么无法分享文档)

    wps么不能分享文件了(wps怎么无法分享文档)

  • 什么叫运行环境加载失败(什么叫运行环境问题)

    什么叫运行环境加载失败(什么叫运行环境问题)

  • 什么是国家首个国家级大数据综合实验区(我国首个国家)

    什么是国家首个国家级大数据综合实验区(我国首个国家)

  • stkal00什么型号(下一页p20)

    stkal00什么型号(下一页p20)

  • 一个手机号能注册几个快手(一个手机号能注册几个抖音号)

    一个手机号能注册几个快手(一个手机号能注册几个抖音号)

  • 奥维互动地图如何使用(奥维互动地图如何更清晰)

    奥维互动地图如何使用(奥维互动地图如何更清晰)

  • 笔记本电脑除号怎么打(笔记本电脑除号怎么打按哪个键盘呢)

    笔记本电脑除号怎么打(笔记本电脑除号怎么打按哪个键盘呢)

  • airpods兼容安卓吗(airportspro 安卓兼容)

    airpods兼容安卓吗(airportspro 安卓兼容)

  • 手机密保怎么设置(手机怎样设置密保问题)

    手机密保怎么设置(手机怎样设置密保问题)

  • 优酷如何上传视频(优酷如何上传视频分享)

    优酷如何上传视频(优酷如何上传视频分享)

  • 欠条和收条,哪个效力大?(欠条和收条,哪个更真实)

    欠条和收条,哪个效力大?(欠条和收条,哪个更真实)

  • 微软Win12系统曝光! 内部代号为 HudsonValley(window12最新系统)

    微软Win12系统曝光! 内部代号为 HudsonValley(window12最新系统)

  • 汇算清缴退税会计科目
  • 企业汇算清缴时允许税前扣除的工资是
  • 小规模纳税人取得专票和普票区别
  • 企业所得税减免优惠政策
  • 专项工程支出计入什么科目
  • 用友t3怎么结转本年利润
  • 劳务公司拿什么来做成本
  • 财务会计制度名称一般是
  • 固定资产一次性扣除怎么做账
  • 开仓库需要营业执照吗
  • 房地产企业汇缴清算条件
  • 来料加工企业的人工工资计入什么费用
  • 货物的运输费用怎么算
  • 收到采购材料发票的会计分录
  • 用于文化活动费用的科目
  • 计提房屋租赁费
  • 企业给员工的异地安家费交个税吗?
  • 出口押汇与打包押汇区别
  • 购买固定资产增值税可以抵扣
  • 劳务分包有执照没资质能开票吗?
  • 工程款税款税率
  • 管理费用的纳税调整
  • 2016年172号
  • 电子银行承兑汇票如何贴现
  • 合并报表内部往来核对不上
  • 公司采购商品支付货款未开票会计分录
  • 有销项没有进项怎么结算成本
  • 什么样的发票需要交税
  • 在线网速测试网站测速工具
  • 绝地求生未来之役手游下载
  • 利得和损失计入哪里
  • 支付挂靠方的管理费用有进项吗?
  • system-coredump进程
  • wamp环境搭建的过程
  • 合法票据的有哪些
  • php中require和include是用来做什么的
  • 利润表的营业收入是开票金额吗
  • php获取数据库中的数据,输出到div中
  • cp命令复制系统文件/etc/profile
  • 休产假期间社保个人部分怎么办
  • 固定资产的销售怎么做账
  • 怎样计提购销合同印花税
  • 土地增值税的扣除项目金额怎么算
  • 子公司计入长期股权投资吗
  • 现金流量表的填列方法
  • 开票一定要确认发票吗
  • sql group by
  • 土石方收据图片
  • 现金流量表现金净增加额负数
  • 企业所得税中通过研发费用辅助账
  • 公司首次申报个人所得税
  • 成品油发票如何作废
  • 固定资产的处置方式包括
  • 预付款对应的发票是什么
  • 单位买另一单位的保险
  • 企业到外地
  • 收到保险理赔款计入什么科目
  • 新单位成立需要做什么工作
  • 发票管理办法实体法还是程序法
  • 销售成本存在的问题
  • 残保金不申报可以补缴吗
  • 改错的技巧
  • sql分组having
  • windows8.1如何分区
  • xp系统的输入法在哪里设置
  • linux系统汉化教程
  • mac如何强制关机开机
  • win8怎么样的
  • Win7开机黑屏只有鼠标,进入安全模式也是黑屏
  • linux启动cron定时任务
  • win7网速很慢
  • 月经其间可以吃消摇丸吗
  • nodejs xhr
  • jQuery实现Select左右复制移动内容
  • javascript工作
  • js弹出对话框的命令
  • 所得税的核定征收方法
  • 怎样在微信小程序里交医保
  • 竣工开始缴房产税吗
  • 初级会计职称可以挂靠吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设