)
1 ONNX简介ONNXOpen Neural Network Exchange开放神经网络交换是一个用于表示深度学习模型的开放式标准格式最初由微软和 MetaFacebook于 2017 年共同发起。它的核心作用是解决不同 AI 框架之间的隔离问题充当 AI 模型在不同训练框架与部署端之间的“通用翻译器”。典型使用流程训练在 PyTorch 中构建并训练神经网络模型。导出调用 torch.onnx.export() 将模型转换并保存为 .onnx 文件。部署在目标平台使用 ONNX Runtime 加载 .onnx 模型并执行推理支持 Python、C、C# 等多语言绑定。2 简单例子准备 PyTorch 模型与导出import torch import torch.nn as nn # 1. 定义一个简单的 PyTorch 模型 class SimpleModel(nn.Module): def __init__(self): super().__init__() self.fc nn.Linear(3, 1) def forward(self, x): return self.fc(x) model SimpleModel() model.eval() # 2. 准备虚拟输入数据用于确定输入 shape 和数据类型 dummy_input torch.randn(1, 3) # 3. 导出为 ONNX 格式 torch.onnx.export( model, dummy_input, simple_model.onnx, input_names[input], # 输入节点名称 output_names[output], # 输出节点名称 dynamic_axes{ # 支持动态 batch 大小 input: {0: batch_size}, output: {0: batch_size} }, opset_version17 # 使用的 ONNX 算子集版本 )使用 ONNX Runtime 加载并推理import numpy as np import onnxruntime as ort # 1. 创建推理 Session会自动选择最佳硬件加速如 CPU/CUDA session ort.InferenceSession(simple_model.onnx) # 2. 准备 NumPy 输入数组类型需与训练时一致如 float32 input_data np.random.randn(1, 3).astype(np.float32) # 3. 获取输入节点名称并执行推理 input_name session.get_inputs()[0].name outputs session.run(None, {input_name: input_data}) # 4. 获取推理结果 print(ONNX 推理输出:, outputs[0])