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 運算元的列表 -
| 序號 | 運算元 |
|---|---|
| 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 域中所有可用運算元的列表。
| 序號 | 運算元 |
|---|---|
| 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 運算元集中不存在特定操作,或者如果開發者建立了新的技術或自定義啟用函式,他們可以定義自定義運算元。
- 自定義運算元由自定義域名稱標識,將其與核心運算元區分開來。
廣告