onnx基本概念

onnx基本概念

参考


ONNX可以类比为专注于数学函数的一个专用变成语言,在这个语言中,定义了机器学习推理过程中所必要的操作。比如,一个线性回归可以描述为:

def onnx_linear_regressor(X):
    "ONNX code for a linear regression"
    return onnx.Add(onnx.MatMul(X, coefficients), bias)

也可以使用ONNX图进行表示。

在这里插入图片描述
ONNX的目标是提供一种能够被任意机器学习框架实用的通用语言。利用ONNX,可以独立于构建模型的学习框架实现生产环境的部署。ONNX也实现了以一个运行时ONNXRuntime,但是主要目的是理解和调试以及转换工具,并不是用于生产环境,因为性能不是其目标。

Input, Output, Node, Initializer, Attributes

  • 一个算子,最基本的是包含输入和输出。
  • Node,是计算图的节点
  • initializer是指输入中不变的常量。
  • Attributes是指算子的参数

Serialization with protobuf

利用protobuf实现序列化

元数据

  • doc_string: Human-readable documentation for this model.
    Markdown is allowed.

  • domain: A reverse-DNS name to indicate the model namespace or domain,
    for example, ‘org.onnx’

  • metadata_props: Named metadata as dictionary map<string,string>,
    (values, keys) should be distinct.

  • model_author: A comma-separated list of names,
    The personal name of the author(s) of the model, and/or their organizations.

  • model_license: The well-known name or URL of the license
    under which the model is made available.

  • model_version: The version of the model itself, encoded in an integer.

  • producer_name: The name of the tool used to generate the model.

  • producer_version: The version of the generating tool.

  • training_info: An optional extension that contains

List of available operators and domains

算子列表

算子的域名主要来自ai.onnx以及ai.onnx.ml,同时支持可扩展性,定义自己的算子。

支持的类型

ONNX主要是优化数值计算的tensor,包含三大元素

  • 类型
  • 形状(维度)
  • 连续的存储空间

Opset版本

每个onnx图都绑定一个Opset版本

Subgraphs, tests and loops

ONNX实现了条件判断和训练,这些模块将别的子图作为属性。这些结构通常慢且复杂,应避免使用。

Extensibility

可扩展性,每一个节点都有 type, a name, named inputs and outputs, and attributes. 只要一个节点具有上述要素,就可以添加到计算图中.

Functions

Functions是一种扩展ONNX规范的方法,用于描述一系列算子的组合,方便复用。

Shape (and Type) Inference

ONNX不必要明确的输入输出的shape,但是可以加速推理。

tools

netron是一个很好的可视化工具

  • 18
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ONNX(Open Neural Network Exchange)是一种开放的深度学习模型表示格式,它的目标是实现模型的互操作性。通过使用ONNX,可以将模型从一个深度学习框架转移到另一个框架,而无需重新训练模型。ONNX定义了一种中间表示(IR),可以表示深度学习模型的结构和参数。\[1\] ONNXRuntime是一个用于高性能推理的开源引擎,它支持在多个平台上运行ONNX模型。ONNXRuntime提供了一组API,可以加载和执行ONNX模型,并提供了针对不同硬件和操作系统的优化。它可以与各种深度学习框架(如PyTorch、TensorFlow等)集成,使得在不同框架之间进行模型转换和推理变得更加方便。\[1\] 关于问题中提到的错误信息,根据引用\[2\]中的内容,可能是由于打包的ONNX文件与当前版本的ONNXRuntime不兼容导致的。解决方法是重新打包ONNX文件,以适应当前版本的ONNXRuntime。 如果你对ONNXONNXRuntime的更多细节感兴趣,可以参考引用\[1\]和引用\[3\]中提供的文章,它们提供了关于ONNX标准、ONNXRuntime的设计理念以及使用ONNXONNXRuntime进行推理加速的详细信息。 #### 引用[.reference_title] - *1* *2* [onnx标准 & onnxRuntime加速推理引擎](https://blog.csdn.net/qq_33934427/article/details/124114195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [onnx和pytorch,tensorrt 推理速度对比GPU CPU](https://blog.csdn.net/weixin_37989267/article/details/126243985)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值