TensorFlow?PyTorch?Paddle?AI工具库生态之争:ONNX一统天下 ⛵

onnx模型输出之elem_type对应类型说明 修改onnx模型输出必备说明 阅读详情

💡 作者:韩信子@ShowMeAI
📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42
📘 本文地址:https://www.showmeai.tech/article-detail/319
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

当今的很多AI算法落地,我们都需要依赖特定的机器学习框架,现在比较热门的 AI 工具库如 TensorFlow 和 PyTorch 都出自大厂,并且有很好的生态和资源,借助它们我们可以很快速完成典型的一些任务,如图像分类或自然语言处理。

然而,工具库和工具库之间的相互切换,是一件很麻烦的事情,比如某公司团队开发主要使用TensorFlow,然而现在有一个深度算法,需要使用 caffe2 部署在移动设备上,那我们需要用 caffe2 重写模型重新训练,这是一个非常耗时耗力的过程。

ONNX 便应运而生,TensorFlow、Caffe2、PyTorch、paddlepaddle、Microsoft Cognitive Toolkit、Apache MXNet 等主流框架都对 ONNX 有着不同程度的支持。这就便于了我们的算法及模型在不同的框架之间的迁移。

ONNX(Open Neural Network Exchange)是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如PyTorch,TensorRT,MXNet)可以采用相同格式存储模型数据并交互。 ONNX的规范及代码主要由微软,亚马逊 ,Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在Github上。

💡 ONNX 官方资源

  • 支持的工具库:

💡 为什么需要ONNX

机器学习/深度学习的出现和蓬勃发展的背景下,深度学习/机器学习模型训练与执行的框架/库的数量呈指数级增长。有两大原因促成这个增长:

  • 硬件供应商开发了自己的框架以实现垂直集成并使其更容易为他们的硬件开发模型
  • 开发自己的框架以针对特定用例实现最佳性能的软件供应商

深度学习框架数量的激增导致整个AI生态系统碎片化,也使跨框架或硬件生态系统的工作变得困难。ONNX 的诞生是为了消除框架之间以及不同硬件生态系统之间互操作性的障碍。

💡 什么是ONNX

ONNX 是一个开放规范,包含以下定义:

📌 计算图模型存储文件格式

模型:是一个保存版本信息和元数据的非循环计算数据流图。

图:包含模型中数据流图的名称、形成图的计算节点列表、图的输入和输出。

计算节点:图中的每个计算节点都接受零个或多个 📘定义类型、一个或多个定义类型的输出以及特定节点对其输入执行的操作类型。

📌 标准数据类型

ONNX 作为标准支持以下数据类型列表:

张量类型:

  • Int8、Int16、Int32、Int64
  • Quantized Int
  • uint8, uint16, uint32, uint64
  • Float16, float, double
  • Bool
  • String
  • Complex64, complex128

非张量类型:

  • Sequence
  • Map
  • Operators (Built-in/ Custom)

📌 算子/运算符

ONNX Graph 中的每个计算节点都执行特定的操作并产生一个或多个输出。 ONNX 标准定义了 📘运算符,ONNX图支持的运算符列表也在不断拓展,并通过 ONNX Opsets 保持最新状态。每次 ONNX Opset 更新都可能新增算子支持或改进现有算子。

💡 ONNX的目标

ONNX 的核心设计理念是:

  • 互操作性
  • 可移植性

如上图所示,ONNX 希望通过提供一个高效的接口将模型从一个框架转换到另一个框架,从而成为不同框架之间的中介。

下表中列出了将模型从一些最常见的AI框架转换为 ONNX 格式的工具。

💡 ONNX实现与现状

实际上,要满足将模型从任何其他AI框架转换为ONNX一直是一个挑战。主要障碍之一是这些AI框架生态的高速发展与每次版本迭代带来的新支持(例如算子等)。

模型从一个框架到另一个框架的转换归结为能够表示原始模型的基础数学运算。下图显示了每个框架中定义的运算符数量。实际上,目前ONNX仅支持PyTorch所有算子的约13% ,一些使用低频 PyTorch 运算符构建的模型在转换时还是有困难。

不过像PyTorch这样的工具库里,包含的很多运算符有这一样或者类似的功能,是否需要完全同步支持也是一个问题。但ONNX开放了自定义运算符的功能,使得用户可以 📘根据需要添加自己的功能。

即使目前 ONNX 还做不到完全支持和自由衔接所有AI工具框架,但凭借丰富的运算符集,ONNX已经可以描述来自各种框架的大多数 DNN 和 ML 模型。它的『函数』功能,使得用户可以把暂时不支持的复杂的操作符用更原始的操作符来表达 。

它带来了AI生态的自由流通,随着生态和社区的高速发展,相信在未来ONNX会成为AI生态中最终的桥梁之一,发挥巨大的作用。

参考资料

AI模型互通的新开放生态系统ONNX介绍与实践 不远的将来,当大多数的AI框架和工具都支持ONNX标准的时候,就不会发生为了选择生产环境的AI框架而重新学习、为了能够生产环境应用模型而耗时移植模型等等类似的事件了。每个节点都是对一个运算器的调用。往往在研发阶段需要的模型属性和产品阶段是不同的,而且不同的框架也会在特定的某个属性上有所优化,例如训练速度、对网络架构的支持、是否支持移动设备等等。概括的说就是,ONNX是在跟踪分析AI框架所生成的神经网络在运行时是如何执行的,然后会利用分析的信息,创建一张可以传输的通用计算图,即符合ONNX标准的计算图。 阅读详情

相关推荐

【Paddle2ONNX】为Paddle2ONNX升级Opset版本到18

在深度学习模型的部署过程中,模型格式的转换是一个至关重要的环节。Paddle2ONNX是一个开源工具,用于将飞桨(PaddlePaddle)模型转换为ONNX格式,以便在各种不同的深度学习框架中进行推理和部署。随着ONNX标准的不断更新,保持Paddle2ONNX与最新版本的兼容性显得尤为重要。本篇文章《【Paddle2ONNX】为Paddle2ONNX升级ONNX版本》将详细介绍如何为Paddle2ONNX项目升级其依赖的ONNX版本。

qq_37380933的博客 2122

ONNX(Open Neural Network Exchange)介绍

ONNX(Open Neural Network Exchange)介绍

网络资源是无限的 6420

什么是 ONNX?它在模型部署中的作用是什么?(面试题200合集,高频、关键)

ONNX (Open Neural Network Exchange) 是一个开放的、用于表示机器学习模型的标准格式。它由微软、Facebook(现Meta)和AWS等公司共同发起并维护,旨在解决不同深度学习框架之间的互操作性问题。你可以将ONNX看作是机器学习模型领域的“通用语言”或“中间件”。ONNX的核心组成:定义了一套标准的、可扩展的计算图结构、内置的运算符集合 (operatorset) 以及标准数据类型。

qq_38334677的博客 627

深度学习部署

深度学习部署

qq_60609496的博客 1652

Geant4 案例分析(一): B1

本文是对Geant4 B1的案例分析,其中特定的功能不做介绍,而注重于各个文件的主要功能,以及它们组织的方式。

m0_51809467的博客 1582

跟着团子学SAP CO:结果分析各评估方法计算逻辑概览 RA Valuation Method Overview KKA1/KKA2/KKA3

在大部分企业财务月结时,结果分析是必不可少的一环,通过结果分析系统可按照设定的评估方法及相关配置自动计算在制品(WIP)、主营业务成本、主营业务收入等等。 在结果分析中最重要的是根据业务需求选择合适的评估方法,目前SAP共提供15种评估方法,今天针对每一种方法计算逻辑及常用的业务场景进行介绍: (1)基于收入的评估方式(带利润实现) Revenue-Based Method with Profit Realization 第一种方式的计算是基于实际收入与计划收入的占比推算应结转的主营业务成本,如果当期累计的

Lucas1211的博客 1万+

[学习笔记] ONNX 基础知识

ONNX 基础(全是理论,没啥实际作用)

Le0v1n 的博客 1万+

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

《Linux运维总结:etcd 3.5.15集群数据备份与恢复》

东城绝神 1080

AI 系统核心组件解析:TensorFlow/PyTorch/ONNX Runtime 怎么用?

本文系统解析AI开发三大核心组件:PyTorch(灵活训练框架)、TensorFlow(工程化框架)和ONNXRuntime(跨平台推理引擎)。通过对比分析各组件定位、特性与适用场景,提供从模型训练到部署的完整技术链路:1)PyTorch适合快速迭代和科研场景;2)TensorFlow擅长生产级部署;3)ONNXRuntime实现跨框架高性能推理。文章包含详细环境配置指南、核心代码示例和常见问题解决方案,特别强调三者协同工作流程(训练→ONNX转换→推理部署),为开发者提供从入门到生产的全流程指导。建议新手

ececec12的博客 1110

ArcGIS实战:手把手教你用DEM和灾害点数据,5步搞定地质灾害风险区划图

本文详细介绍了使用ArcGIS进行地质灾害风险评估的完整流程,从DEM和灾害点数据出发,通过五步标准化操作生成专业风险区划图。重点讲解了信息量模型的应用,帮助读者掌握GIS技术在地质灾害易发性评价中的实践方法,提升风险评估效率与准确性。

weixin_30696427的博客 426

TeraTerm 使用技巧

⏹TeraTerm 使用技巧

菜鸟记录 1万+

onnx文件及其结构、正确导出onnx、onnx读取、onnx创建、onnx修改、onnx解析器

通过把onnx-ml.proto这个文件交给protoc,protoc是Protobuf提供的编译程序(protoc --help可查看protoc工具的具体用法),把它。

Rolandxxx的博客 3万+

Oracle MCP Server实战:自然语言如何重塑数据库交互体验

本文深入探讨了Oracle MCP Server如何通过自然语言交互技术革新数据库操作体验。作为Oracle数据库的革命性工具,MCP Server集成了先进的Text-to-SQL技术,允许用户使用自然语言直接查询数据库,大幅降低使用门槛。文章详细介绍了从环境搭建、实战案例到企业级部署的全流程,特别强调了中文自然语言处理能力和安全最佳实践,为DBA和开发者提供了从传统SQL到智能交互的转型指南。

u9v0w的博客 283

ONNX 官方文档

官方文档

zyd_1129的博客 2625

【AI大模型:前沿】44、大模型+机器人:从自动化工具到通用智能体的技术革命与应用全景

大模型与机器人的融合催生了“具身智能体”,突破传统机器人智能化缺失、功能单一等瓶颈。大模型赋予机器人三大能力:常识推理(如热牛奶需去包装)、模糊指令解析(如“整理书桌”拆解步骤)、零样本任务泛化(如搭乐高桥)。技术实现上,通过多模态融合(视觉-语言-动作)、仿真训练(虚拟试错)和实时反馈(动态调整动作)形成闭环。主流框架如Google RT-2(端到端动作生成)、斯坦福Q-Transformer(强化学习优化)和Figure 01(ChatGPT驱动人形机器人)各具优势,可适配工业、家庭等场景。该技术正重塑

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 2019

188、LLC谐振变换器的样机调试实战(EMI测试)

本文分享了LLC谐振变换器EMI调试的实战经验。作者通过300W电源案例,指出LLC的EMI问题主要来自谐振腔共模电流和死区振铃,并提出三板斧解决方案:优化功率回路布局、合理选择共模电感、正确配置X/Y电容。文章详细分析了谐振电容位置、MOSFET走线、变压器屏蔽等关键设计要点,并列举示波器探头、滤波器接地等常见误区。最后强调EMI调试70%依赖布局优化,建议预扫测试、数据记录并保留6dB余量。全文以实际案例贯穿,为LLC电源EMI设计提供了实用指导。

Jack010169的博客 56

使用ONNX将Pytorch转为Tensorflow的使用尝试

使用ONNX将Pytorch转为Tensorflow 参考官方教程将Pytorch通过ONNX转为tensorflow。 from onnx_test import resolution import numpy as np import os from torch import nn import torch.utils.model_zoo as model_zoo import torch.onnx from onnx_tf.backend import prepare import onnx

zjjtilm的博客 2146

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

EAI_Transformer、Pytorch、TensorFlow和ONNX的名词辨析

名称 类型 作用 举例。

eillot_qian的博客 290

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

[笔记] ONNX Export笔记[进行中...]

ONNX可以提供方便的平台兼容性和方便的移植实现,Opset,可以接收其他的推理模型的的移植,比如从.pt=>.onnx。而.onnx利用Runtime规范,以及可扩展接口,把.onnx模型向下兼容到各个硬件平台。硬件芯片,比如npu供应商,可以依据Runtime扩展接口,提供基于.onnx opset模型的执行能力。ONNX Opset 是指 ONNX 格式中支持的操作集合版本。ONNX 标准随着时间的推移会推出新的 opset 版本,每个 opset 版本定义了支持的操作集合和规范。当创建或导出一个 O

含光左卫的工作笔记集 1405

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

转换onnx_PyTorch 到 ONNX 到 Tensorflow 到 TFLite的坑

.view()在 Pytorch 中,经常会对某个具体的 Tensor 做变换的处理。但在 PyTorch 转换到 ONNX 的过程中,例如 fea = fea.view(1, -1, 1, 1)ONNX 会错误将 view 的纬度扩张变成 Reshape 节点,如下图所示但是在 Reshape 节点转换到 Tensorflow 的时候,Reshape 节点就变成了 Where 节点和若干节点的组...

weixin_35598388的博客 1269

【无标题】TensorFlow、PyTorch、ONNX、TensorRT

在Linux上推理模型的步骤通常取决于您所使用的深度学习框架(如 TensorFlow、PyTorch、ONNX、TensorRT等),以及您所使用的模型类型。outputs = ort_session.run(None, {'input': input_array}) # 'input' 是模型的输入名称。将训练好的模型文件(如 `.pth`、`.h5` 或 `.onnx` 格式)下载到您的Linux系统上。image = image.resize((224, 224)) # 根据模型需求调整尺寸。

2301_80355452的博客 948

PyTorch vs TensorFlow:2025年,AI研究生的第一门框架该如何选?

PyTorch vs. TensorFlow:2024年AI研究框架选择指南 摘要: 对于AI研究方向的学生,2025年框架选择已趋于明朗。PyTorch凭借更平缓的学习曲线、Pythonic设计、活跃的中文社区和学术圈主导地位,成为研究首选。其动态图特性极大简化了论文复现和模型调试过程,Hugging Face等生态工具也提供了强大支持。虽然TensorFlow在工业部署上仍具优势,但PyTorch通过TorchScript和ONNX生态已大幅改善部署能力。建议研究者优先掌握PyTorch,待研究深入后再

像风一样自由 1297

打破框架壁垒!PyTorch与TensorFlow模型互导全攻略:从原理到实战(附完整代码与性能对比)

在深度学习领域,PyTorch和TensorFlow作为两大主流框架,各自拥有独特的优势,但也存在框架割据的问题,导致资源重复开发和技术迁移困难。为了解决这些问题,模型互导技术应运而生,通过中间格式如ONNX,实现PyTorch与TensorFlow模型之间的转换。本文详细介绍了模型互导的基础原理、技术路线图以及具体的转换方法,包括从PyTorch到TensorFlow和从TensorFlow到PyTorch的转换步骤。此外,还探讨了复杂模型处理中的自定义层和特殊算子的转换问题。

weixin_40593051的博客 1392

深度学习框架对比---Pytorch和TensorFlow

PyTorch和TensorFlow是两大主流深度学习框架,各有优劣。

MzKyle的博客 2406

深度学习框架之争:PyTorch、TensorFlow和PaddlePaddle的全面对比

通过对PyTorch、TensorFlow和PaddlePaddle的全面对比,我们更清晰地了解了它们各自的特点和应用场景。在实际选择时,需要根据具体的需求和场景来权衡各框架的优劣,以实现最佳的深度学习体验。愿深度学习领域在三大框架的共同努力下取得更大的突破,为人工智能的未来贡献更多精彩!

BetrayFree的博客 7875

YDOOK:onnx onnxruntime 官网 origin website

YDOOK:onnx onnxruntime 官网 origin website

YDOOK 555
上一篇: 羡慕实时数据看板?来看看Python的交互数据分析可视化工具! ⛵
下一篇: Kaggle官方·数据科学比赛经验集;百度开源·飞桨图像数据标注高效工具;C++并发编程实践第2版·笔记;前沿论文 | ShowMeAI资讯日报
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值