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 | 操作员 |
---|---|
1 | Abs |
2 | Acos |
3 | Acosh |
4 | Add |
5 | AffineGrid |
6 | And |
7 | ArgMax |
8 | ArgMin |
9 | Asin |
10 | Asinh |
11 | Atan |
12 | Atanh |
13 | AveragePool |
14 | BatchNormalization |
15 | Bernoulli |
16 | BitShift |
17 | BitwiseAnd |
18 | BitwiseNot |
19 | BitwiseOr |
20 | BitwiseXor |
21 | BlackmanWindow |
22 | Cast |
23 | CastLike |
24 | Ceil |
25 | Celu |
26 | CenterCropPad |
27 | Clip |
28 | Col2Im |
29 | Compress |
30 | Concat |
31 | ConcatFromSequence |
32 | Constant |
33 | ConstantOfShape |
34 | Conv |
35 | ConvInteger |
36 | ConvTranspose |
37 | Cos |
38 | Cosh |
39 | CumSum |
40 | DFT |
41 | DeformConv |
42 | DepthToSpace |
43 | DequantizeLinear |
44 | Det |
45 | Div |
46 | Dropout |
47 | DynamicQuantizeLinear |
48 | Einsum |
49 | Elu |
50 | Equal |
51 | Erf |
52 | Exp |
53 | Expand |
54 | EyeLike |
55 | Flatten |
56 | Floor |
57 | GRU |
58 | Gather |
59 | GatherElements |
60 | GatherND |
61 | Gelu |
62 | Gemm |
63 | GlobalAveragePool |
64 | GlobalLpPool |
65 | GlobalMaxPool |
66 | Greater |
67 | GreaterOrEqual |
68 | GridSample |
69 | GroupNormalization |
70 | HammingWindow |
71 | HannWindow |
72 | HardSigmoid |
73 | HardSwish |
74 | Hardmax |
75 | Identity |
76 | If |
77 | ImageDecoder |
78 | InstanceNormalization |
79 | IsInf |
80 | IsNaN |
81 | LRN |
82 | LSTM |
83 | LayerNormalization |
84 | LeakyRelu |
85 | Less |
86 | LessOrEqual |
87 | Log |
88 | LogSoftmax |
89 | Loop |
90 | LpNormalization |
91 | LpPool |
92 | MatMul |
93 | MatMulInteger |
94 | Max |
95 | MaxPool |
96 | MaxRoiPool |
97 | MaxUnpool |
98 | Mean |
99 | MeanVarianceNormalization |
100 | MelWeightMatrix |
101 | Min |
102 | Mish |
103 | Mod |
104 | Mul |
105 | Multinomial |
106 | Neg |
107 | NonMaxSuppression |
108 | NonZero |
109 | Not |
110 | OneHot |
111 | Optional |
112 | Or |
113 | PRelu |
114 | Pad |
115 | Pow |
116 | QLinearAdd |
117 | QLinearAveragePool |
118 | QLinearConcat |
119 | QLinearConv |
120 | QLinearLeakyRelu |
121 | QLinearMul |
122 | QLinearSigmoid |
123 | QLinearSoftmax |
124 | QLinearTranspose |
ai.onnx.ml 域运算符
以下是 ai.onnx.ml 域中所有可用运算符的列表。
S.No | 运算符 |
---|---|
1 | ArrayFeatureExtractor |
2 | Binarizer |
3 | CastMap |
4 | CategoryMapper |
5 | DictVectorizer |
6 | FeatureVectorizer |
7 | Imputer |
8 | LabelEncoder |
9 | LinearClassifier |
10 | LinearRegressor |
11 | Normalizer |
12 | OneHotEncoder |
13 | SVMClassifier |
14 | SVMRegressor |
15 | Scaler |
16 | TreeEnsemble |
17 | TreeEnsembleClassifier |
18 | TreeEnsembleRegressor |
19 | ZipMap |
ONNX 中的自定义运算符
除了核心运算符之外,ONNX 还允许开发人员为更专业或非标准的任务定义自定义运算符。
- 如果 ONNX 运算符集中不存在特定操作,或者开发人员创建了新技术或自定义激活函数,则可以定义自定义运算符。
- 自定义运算符由自定义域名标识,以区别于核心运算符。