ONNX
美国
ONNX(Open Neural Network Exchange,开放神经网络交换) 是一套开放、跨框架、跨硬件的深度学习模型标准格式(.onnx 文件),核心是做模型的 “通用中间表示”,解决不同训练框架、推理引擎、硬件平台之间的兼容性问题。

一、一句话定位

AI 模型的 “通用 PDF”:不管用 PyTorch、TensorFlow 还是 MXNet 训练,都能导出成 .onnx;再导入到 ONNX Runtime、TensorRT、OpenVINO 等推理引擎,在 CPU/GPU/NPU/ 边缘设备上跑,实现一次训练、多端部署

二、核心作用

  1. 跨框架互通:打破 PyTorch ↔ TensorFlow 等框架壁垒,模型可互相转换、复用。
  2. 跨硬件部署:一份 .onnx 模型,适配 CPU、GPU、FPGA、移动端、边缘芯片等。
  3. 简化推理优化:推理引擎(如 ONNX Runtime)可对 ONNX 模型做量化、剪枝、图优化,提升速度。

三、核心结构(极简)

  • 计算图(DAG):用节点(算子,如 Conv、ReLU)+ 边(张量 / 数据)描述模型流程。
  • 权重参数:模型的所有参数存在 .onnx 文件里。
  • 算子规范:统一不同框架的底层运算定义,保证转换后行为一致。

四、典型流程

  1. 训练:PyTorch/TensorFlow 训练模型。
  2. 导出:torch.onnx.export() / tf2onnx 转成 .onnx
  3. 推理:用 ONNX Runtime / TensorRT / OpenVINO 加载 .onnx,在目标硬件上跑。

五、一句话总结

ONNX 是 AI 模型的 “翻译官 + 适配器”,让模型在不同框架、不同硬件间自由流转、高效运行。

六、代码演示

最精简、能直接跑的 ONNX 完整流程
PyTorch 模型 → 导出 ONNX → 用 ONNX Runtime 推理,复制就能用。

1. 安装

pip install torch onnx onnxruntime

2. 核心示例:训练 → 导出 ONNX → 推理

import torch
import torch.nn as nn
import onnx
import onnxruntime as ort
import numpy as np

# ======================
# 1. 定义一个简单 PyTorch 模型
# ======================
class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(3, 1)

    def forward(self, x):
        return self.fc(x)

model = Net()
model.eval()  # 推理模式

# 构造一个输入
dummy_input = torch.randn(1, 3)

# ======================
# 2. 导出为 ONNX 模型
# ======================
torch.onnx.export(
    model,
    dummy_input,
    "model.onnx",       # 输出文件名
    opset_version=17,   # 版本
    input_names=["input"],
    output_names=["output"]
)

# 检查 ONNX 模型是否合法
onnx_model = onnx.load("model.onnx")
onnx.checker.check_model(onnx_model)
print("✅ ONNX 模型导出并验证成功")

# ======================
# 3. 用 ONNX Runtime 推理
# ======================
ort_sess = ort.InferenceSession("model.onnx")

# 构造输入
input_np = np.random.randn(1, 3).astype(np.float32)

# 运行
outputs = ort_sess.run(
    ["output"],
    {"input": input_np}
)

print("ONNX Runtime 输出:", outputs[0])

3. 真实场景:ResNet 导出 ONNX(常用)

import torch
import torchvision.models as models

model = models.resnet18(pretrained=True)
model.eval()

dummy = torch.randn(1, 3, 224, 224)

torch.onnx.export(
    model, dummy, "resnet18.onnx",
    input_names=["image"],
    output_names=["logits"],
    opset_version=17
)

4. 你只要记住 3 句

  • ONNX = 通用模型格式,跨框架、跨硬件、跨语言
  • 导出torch.onnx.export(...)
  • 推理onnxruntime.InferenceSession

数据统计

数据评估

ONNX浏览人数已经达到0,如你需要查询该站的相关权重信息,可以点击"5118数据""爱站数据""Chinaz数据"进入;以目前的网站数据参考,建议大家请以爱站数据为准,更多网站价值评估因素如:ONNX的访问速度、搜索引擎收录以及索引量、用户体验等;当然要评估一个站的价值,最主要还是需要根据您自身的需求以及需要,一些确切的数据则需要找ONNX的站长进行洽谈提供。如该站的IP、PV、跳出率等!

关于ONNX特别声明

本站蜜蜂导航提供的ONNX都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由蜜蜂导航实际控制,在2026年2月11日 下午1:49收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,蜜蜂导航不承担任何责任。

相关导航

暂无评论

暂无评论...