ONNX - 运算符

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

在本教程中,我们将探索什么是 ONNX 运算符、不同类型以及它们在 ONNX 兼容模型中的功能。

什么是 ONNX 运算符?

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

<name, domain, version>

其中,

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

ONNX 中的核心运算符

核心运算符是 ONNX 和 ONNX-ML 附带的标准运算符集。这些运算符经过高度优化,并受任何 ONNX 兼容产品的支持。这些运算符旨在涵盖最常见的机器学习任务,通常无法进一步分解为更简单的操作。

核心运算符的主要功能 −

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

ai.onnx 域运算符

以下是 ai.onnx 运算符的列表 −

S.No 操作员
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 域中所有可用运算符的列表。

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

ONNX 中的自定义运算符

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

  • 如果 ONNX 运算符集中不存在特定操作,或者开发人员创建了新技术或自定义激活函数,则可以定义自定义运算符。
  • 自定义运算符由自定义域名标识,以区别于核心运算符。