ONNX - 算子



ONNX 中的算子是定义机器学习模型中计算的基本构建块,将来自各种框架(如 TensorFlow、PyTorch 等)的操作映射到标准化的 ONNX 格式。

在本教程中,我们将探讨什么是 ONNX 算子、不同类型以及它们如何在兼容 ONNX 的模型中发挥作用。

什么是 ONNX 算子?

ONNX 算子是 ONNX 模型中使用的计算基本单元。每个算子定义一种特定类型的操作,例如数学计算、数据处理或神经网络层。算子由一个元组标识 -

<name, domain, version>

其中,

  • 名称:算子的名称。
  • :算子所属的命名空间。
  • 版本:算子的版本(用于跟踪更新和更改)。

ONNX 中的核心算子

核心算子是 ONNX 和 ONNX-ML 附带的标准算子集。这些算子经过高度优化,并受任何兼容 ONNX 的产品支持。这些算子旨在涵盖大多数常见的机器学习任务,并且通常不能被进一步分解成更简单的操作。

核心算子的主要特点 -

  • 这些是在 ONNX 框架内定义的标准算子。
  • ai.onnx 域包含 124 个算子,而 ai.onnx.ml 域(专注于机器学习任务)包含 19 个算子。
  • 核心算子支持各种问题领域,例如图像分类、推荐系统和自然语言处理。

ai.onnx 域算子

以下是 ai.onnx 算子的列表 -

序号 算子
1Abs
2Acos
3Acosh
4Add
5AffineGrid
6And
7ArgMax
8ArgMin
9Asin
10Asinh
11Atan
12Atanh
13AveragePool
14BatchNormalization
15Bernoulli
16BitShift
17BitwiseAnd
18BitwiseNot
19BitwiseOr
20BitwiseXor
21BlackmanWindow
22Cast
23CastLike
24Ceil
25Celu
26CenterCropPad
27Clip
28Col2Im
29Compress
30Concat
31ConcatFromSequence
32Constant
33ConstantOfShape
34Conv
35ConvInteger
36ConvTranspose
37Cos
38Cosh
39CumSum
40DFT
41DeformConv
42DepthToSpace
43DequantizeLinear
44Det
45Div
46Dropout
47DynamicQuantizeLinear
48Einsum
49Elu
50Equal
51Erf
52Exp
53Expand
54EyeLike
55Flatten
56Floor
57GRU
58Gather
59GatherElements
60GatherND
61Gelu
62Gemm
63GlobalAveragePool
64GlobalLpPool
65GlobalMaxPool
66Greater
67GreaterOrEqual
68GridSample
69GroupNormalization
70HammingWindow
71HannWindow
72HardSigmoid
73HardSwish
74Hardmax
75Identity
76If
77ImageDecoder
78InstanceNormalization
79IsInf
80IsNaN
81LRN
82LSTM
83LayerNormalization
84LeakyRelu
85Less
86LessOrEqual
87Log
88LogSoftmax
89Loop
90LpNormalization
91LpPool
92MatMul
93MatMulInteger
94Max
95MaxPool
96MaxRoiPool
97MaxUnpool
98Mean
99MeanVarianceNormalization
100MelWeightMatrix
101Min
102Mish
103Mod
104Mul
105Multinomial
106Neg
107NonMaxSuppression
108NonZero
109Not
110OneHot
111Optional
112Or
113PRelu
114Pad
115Pow
116QLinearAdd
117QLinearAveragePool
118QLinearConcat
119QLinearConv
120QLinearLeakyRelu
121QLinearMul
122QLinearSigmoid
123QLinearSoftmax
124QLinearTranspose

ai.onnx.ml 域算子

以下是 ai.onnx.ml 域中所有可用算子的列表。

序号 算子
1ArrayFeatureExtractor
2Binarizer
3CastMap
4CategoryMapper
5DictVectorizer
6FeatureVectorizer
7Imputer
8LabelEncoder
9LinearClassifier
10LinearRegressor
11Normalizer
12OneHotEncoder
13SVMClassifier
14SVMRegressor
15Scaler
16TreeEnsemble
17TreeEnsembleClassifier
18TreeEnsembleRegressor
19ZipMap

ONNX 中的自定义算子

除了核心算子之外,ONNX 还允许开发者为更专业或非标准的任务定义自定义算子。

  • 如果 ONNX 算子集中不存在特定操作,或者如果开发者创建了新的技术或自定义激活函数,他们可以定义自定义算子。
  • 自定义算子由自定义域名称标识,将其与核心算子区分开来。
广告