【深度学习】ONNX介绍

ONNX(Open Neural Network Exchange)

ONNX 是一种用于表示深度学习模型的开放格式,使得不同深度学习框架(如 PyTorch、TensorFlow、Caffe2 等)之间的模型能够相互交换。

需安装:

bash 复制代码
pip install --upgrade onnx onnxscript onnxruntime

Pytorch张量

可使用torch.rand()方法创建0~1均匀分布的随机数,使用torch.randn()方法创建标准正态分布随机数,使用torch.zeros()和torch.ones()方法创建全0和全1的张量。

在构造张量时使用dtype明确其类型。

PyTorch针对torch.float32和torch.int64类型有专门这样的简写形式是因为,这两种类型特别重要,模型的输入类型一般都是torch.float32,而模型分类问题的标签类型一般为torch.int64。

torch.onnx.export 是 PyTorch 自带的把模型转换成 ONNX 格式的函数。前三个参数分别是要转换的模型 、模型的任意一组输入 、导出的 ONNX 文件的文件名。

简单示例

python 复制代码
import torch  
import torchvision.models as models  
  
# 加载一个预训练的 PyTorch 模型  
model = models.resnet18(pretrained=True)  
model.eval()  
  
# 创建一个虚拟输入张量(这里使用随机数据)  
dummy_input = torch.randn(1, 3, 224, 224)  # 假设输入是一张 224x224 的 RGB 图像  
  
# 导出模型为 ONNX 格式  
torch.onnx.export(model, dummy_input, "resnet18.onnx", verbose=True, input_names=["input_0"], output_names=["output_0"])

注意点:

  • 确保你的 PyTorch 模型在导出之前已经处于评估模式(model.eval())

  • 示例输入(dummy input)应该与你的模型训练时使用的输入具有相同的形状和数据类型。

  • 在将输入数据传递给 ONNX Runtime 之前,请确保它们已经转换为 NumPy 数组,并且位于 CPU 上

相关推荐
QYR_1114 分钟前
机械制造用固体润滑涂层市场分析:2032年全球市场规模预计达8.78亿元,CAGR为6.2%
大数据·人工智能·物联网
SunShaoLu29 分钟前
数据库建模工具选型实录:7 款 ER 图工具的工程边界与落地流程
人工智能·er图·ai工具
AI棒棒牛43 分钟前
YOLO26 改进:融合 DCS 的 R_PAMMD 到 ROI/Neck 特征,构建对象级原型分布对齐检测器!
人工智能·目标检测·计算机视觉·yolo26
hsfxuebao1 小时前
Hermes Agent 实战篇:AI 驱动的技术博客自动发布系统
人工智能
Smoothcloud润云1 小时前
PyTorch推理服务动态批处理实战:兼顾吞吐与延迟
人工智能·pytorch·python·深度学习·ai·gpu算力
蜗牛互联网1 小时前
GPT-6 与 Intelligent UI:从回答到可审计操作的产品迁移
java·人工智能·后端
Sayai2 小时前
ComfyUI 一键换衣 2.0:FLUX Fill 服装一致性工作流全模型清单与新版避坑指南(12G 显存实测跑通)
人工智能·aigc·flux·图生图·comfyui
半个落月2 小时前
LangGraph.js 实战:从状态图到分支、循环、检查点与人工中断
javascript·人工智能·langchain
临床数据科学和人工智能兴趣组2 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go2 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型