【深度学习】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 上

相关推荐
染指11102 分钟前
162.Agent-LangGraph-检查点的作用
人工智能·python·langchain·agents
FII工业富联科技服务3 分钟前
从灯塔工厂到规模化智能运营:Omniverse Sim2Real与多智能体协同架构解析
人工智能·数字孪生·ai智能体·工业机器人·omniverse·柔性制造·灯塔工厂
合尘猫6 分钟前
6GB 笔记本本地跑 Z-Image Turbo:一次从 cu121 到 cu130 的踩坑记录
人工智能·ai·大模型·本地部署
2401_832298107 分钟前
当思考本身被解放:AI 时代的人与机器
人工智能
北方的银狐-Zero10 分钟前
Palantir 平替产品出世:OntoL 8.0 发布,把「企业级本体决策平台」产品复刻出来了
人工智能·本体论·本体产品
赤龙ERP11 分钟前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
AI编程教父17 分钟前
企业AI转型做自动化,哪些靠规则、哪些交给AI?红烁AI企业AI培训用两类任务对比
人工智能
m0_7196408717 分钟前
适合教学科研的人工智能实验室建设方案有哪些?(含测评)
人工智能·经验分享
智学AI18 分钟前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
dozenyaoyida18 分钟前
AI与大模型新闻日报 | 2026-10-30
人工智能·ai·chatgpt·大模型·新闻