Comparison: onnx OpSchema vs onnx_light LightOpSchema#
This page programmatically compares the operator schemas exposed by the
reference onnx package (onnx.defs.OpSchema) with the
lightweight schemas exposed by onnx_light
(LightOpSchema, from the C++ onnx_op extension).
For every operator known to either side the table below reports:
whether the operator is described by an
OpSchema(onnx);whether the operator is described by a
LightOpSchema(onnx_light);whether a shape-inference function is registered on the
onnxside (OpSchema.has_type_and_shape_inference_function);whether a shape-inference function is registered on the
onnx_lightside. Shape inference foronnx_lightlives in theonnx_optimlibrary (onnx_light/onnx_optim/shapes/shape_inference.cc), separate from the schema definitions themselves;how many node backend tests exercise the operator in each package. A test case is attributed to the
op_typeof the first node of its model — the convention used by the ONNX node backend test suite, and also the one used by the test cases generated byonnx_light.backend.test.case.base.collect_test_case().
Note
The page is regenerated every time the documentation is built, so the
numbers always reflect the operator schemas and backend tests shipped
with the installed onnx and onnx_light packages. When the
reference onnx package is not installed, the onnx-side columns
are reported as empty / zero.
Summary#
Metric |
|
|
|---|---|---|
Operators with a schema |
223 |
73 |
Operators with shape inference |
212 |
23 |
Node backend tests (counted) |
1678 |
105 |
Per-operator comparison#
The table below is rendered with the sphinx-datatables extension,
so it is interactive: use the search box to filter operators by any
column (domain, name, yes/no flags, test counts) and click on a
column header to sort the table by that column (click again to toggle
ascending / descending order).
Domain |
Operator |
|
|
|
|
|
|
|---|---|---|---|---|---|---|---|
ai.onnx |
Abs |
yes |
yes |
yes |
yes |
10 |
1 |
ai.onnx |
Acos |
yes |
yes |
yes |
yes |
2 |
1 |
ai.onnx |
Acosh |
yes |
yes |
yes |
yes |
2 |
1 |
ai.onnx |
Add |
yes |
yes |
yes |
yes |
8 |
2 |
ai.onnx |
AffineGrid |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
And |
yes |
yes |
yes |
yes |
8 |
10 |
ai.onnx |
ArgMax |
yes |
yes |
yes |
no |
16 |
0 |
ai.onnx |
ArgMin |
yes |
yes |
yes |
no |
16 |
0 |
ai.onnx |
Asin |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
Asinh |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
Atan |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Atanh |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Attention |
yes |
no |
yes |
no |
62 |
0 |
ai.onnx |
AveragePool |
yes |
yes |
yes |
yes |
20 |
11 |
ai.onnx |
BatchNormalization |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
Bernoulli |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
BitCast |
yes |
no |
yes |
no |
10 |
0 |
ai.onnx |
BitShift |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
BitwiseAnd |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
BitwiseNot |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
BitwiseOr |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
BitwiseXor |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
BlackmanWindow |
yes |
yes |
yes |
no |
2 |
2 |
ai.onnx |
Cast |
yes |
yes |
yes |
yes |
125 |
4 |
ai.onnx |
CastLike |
yes |
no |
yes |
no |
56 |
0 |
ai.onnx |
Ceil |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Celu |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
CenterCropPad |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
Clip |
yes |
no |
yes |
no |
12 |
0 |
ai.onnx |
Col2Im |
yes |
no |
yes |
no |
5 |
0 |
ai.onnx |
Compress |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
Concat |
yes |
yes |
yes |
yes |
12 |
2 |
ai.onnx |
ConcatFromSequence |
yes |
yes |
yes |
no |
0 |
0 |
ai.onnx |
Constant |
yes |
yes |
yes |
yes |
197 |
1 |
ai.onnx |
ConstantOfShape |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Conv |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
ConvInteger |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
ConvTranspose |
yes |
no |
yes |
no |
11 |
0 |
ai.onnx |
Cos |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
Cosh |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
CumProd |
yes |
no |
yes |
no |
9 |
0 |
ai.onnx |
CumSum |
yes |
no |
yes |
no |
9 |
0 |
ai.onnx |
DFT |
yes |
no |
yes |
no |
10 |
0 |
ai.onnx |
DeformConv |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
DepthToSpace |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
DequantizeLinear |
yes |
no |
yes |
no |
14 |
0 |
ai.onnx |
Det |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Div |
yes |
yes |
yes |
no |
10 |
5 |
ai.onnx |
Dropout |
yes |
no |
yes |
no |
12 |
0 |
ai.onnx |
DynamicQuantizeLinear |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Einsum |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
Elu |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Equal |
yes |
yes |
yes |
no |
10 |
0 |
ai.onnx |
Erf |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Exp |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
Expand |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
EyeLike |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Flatten |
yes |
no |
yes |
no |
9 |
0 |
ai.onnx |
Floor |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
GRU |
yes |
yes |
yes |
no |
4 |
0 |
ai.onnx |
Gather |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
GatherElements |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
GatherND |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Gelu |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
Gemm |
yes |
yes |
yes |
no |
11 |
0 |
ai.onnx |
GlobalAveragePool |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
GlobalLpPool |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
GlobalMaxPool |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Greater |
yes |
yes |
yes |
yes |
16 |
4 |
ai.onnx |
GreaterOrEqual |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
GridSample |
yes |
no |
yes |
no |
18 |
0 |
ai.onnx |
GroupNormalization |
yes |
no |
no |
no |
2 |
0 |
ai.onnx |
HammingWindow |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
HannWindow |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
HardSigmoid |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
HardSwish |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Hardmax |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
Identity |
yes |
no |
yes |
no |
5 |
0 |
ai.onnx |
If |
yes |
yes |
yes |
yes |
3 |
2 |
ai.onnx |
ImageDecoder |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
InstanceNormalization |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
IsInf |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
IsNaN |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
LRN |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
LSTM |
yes |
yes |
yes |
no |
4 |
0 |
ai.onnx |
LayerNormalization |
yes |
no |
yes |
no |
19 |
0 |
ai.onnx |
LeakyRelu |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Less |
yes |
yes |
yes |
yes |
26 |
4 |
ai.onnx |
LessOrEqual |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
Log |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
LogSoftmax |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
Loop |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
LpNormalization |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
LpPool |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
MatMul |
yes |
yes |
yes |
no |
7 |
0 |
ai.onnx |
MatMulInteger |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Max |
yes |
no |
yes |
no |
14 |
0 |
ai.onnx |
MaxPool |
yes |
no |
yes |
no |
19 |
0 |
ai.onnx |
MaxRoiPool |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
MaxUnpool |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Mean |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
MeanVarianceNormalization |
yes |
no |
no |
no |
1 |
0 |
ai.onnx |
MelWeightMatrix |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Min |
yes |
no |
yes |
no |
14 |
0 |
ai.onnx |
Mish |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Mod |
yes |
yes |
yes |
no |
13 |
0 |
ai.onnx |
Mul |
yes |
yes |
yes |
no |
27 |
5 |
ai.onnx |
Multinomial |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
Neg |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
NegativeLogLikelihoodLoss |
yes |
no |
yes |
no |
18 |
0 |
ai.onnx |
NonMaxSuppression |
yes |
no |
yes |
no |
10 |
0 |
ai.onnx |
NonZero |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Not |
yes |
yes |
yes |
no |
3 |
0 |
ai.onnx |
OneHot |
yes |
no |
yes |
no |
4 |
0 |
ai.onnx |
Optional |
yes |
yes |
yes |
yes |
0 |
1 |
ai.onnx |
OptionalGetElement |
yes |
yes |
yes |
no |
4 |
0 |
ai.onnx |
OptionalHasElement |
yes |
yes |
yes |
no |
7 |
0 |
ai.onnx |
Or |
yes |
yes |
yes |
no |
8 |
10 |
ai.onnx |
PRelu |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Pad |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
Pow |
yes |
yes |
yes |
no |
12 |
0 |
ai.onnx |
QLinearConv |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
QLinearMatMul |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
QuantizeLinear |
yes |
yes |
yes |
yes |
13 |
2 |
ai.onnx |
RMSNormalization |
yes |
no |
yes |
no |
19 |
0 |
ai.onnx |
RNN |
yes |
yes |
yes |
no |
4 |
0 |
ai.onnx |
RandomNormal |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
RandomNormalLike |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
RandomUniform |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx |
RandomUniformLike |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Range |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Reciprocal |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
ReduceL1 |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
ReduceL2 |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
ReduceLogSum |
yes |
yes |
yes |
no |
5 |
0 |
ai.onnx |
ReduceLogSumExp |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
ReduceMax |
yes |
yes |
yes |
no |
10 |
0 |
ai.onnx |
ReduceMean |
yes |
yes |
yes |
no |
8 |
0 |
ai.onnx |
ReduceMin |
yes |
yes |
yes |
no |
10 |
0 |
ai.onnx |
ReduceProd |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
ReduceSum |
yes |
yes |
yes |
yes |
17 |
3 |
ai.onnx |
ReduceSumSquare |
yes |
yes |
yes |
no |
9 |
0 |
ai.onnx |
RegexFullMatch |
yes |
yes |
yes |
no |
3 |
0 |
ai.onnx |
Relu |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Reshape |
yes |
no |
yes |
yes |
10 |
0 |
ai.onnx |
Resize |
yes |
no |
yes |
no |
39 |
0 |
ai.onnx |
ReverseSequence |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
RoiAlign |
yes |
yes |
yes |
yes |
3 |
2 |
ai.onnx |
RotaryEmbedding |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
Round |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
STFT |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Scan |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Scatter |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
ScatterElements |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
ScatterND |
yes |
no |
yes |
no |
5 |
0 |
ai.onnx |
Selu |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
SequenceAt |
yes |
yes |
yes |
no |
0 |
0 |
ai.onnx |
SequenceConstruct |
yes |
yes |
yes |
yes |
0 |
2 |
ai.onnx |
SequenceEmpty |
yes |
yes |
yes |
no |
0 |
0 |
ai.onnx |
SequenceErase |
yes |
yes |
yes |
no |
0 |
0 |
ai.onnx |
SequenceInsert |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
SequenceLength |
yes |
yes |
yes |
no |
6 |
0 |
ai.onnx |
SequenceMap |
yes |
yes |
yes |
no |
6 |
0 |
ai.onnx |
Shape |
yes |
no |
yes |
no |
73 |
0 |
ai.onnx |
Shrink |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Sigmoid |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Sign |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Sin |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
Sinh |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx |
Size |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Slice |
yes |
no |
yes |
no |
8 |
0 |
ai.onnx |
Softmax |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
SoftmaxCrossEntropyLoss |
yes |
no |
yes |
no |
34 |
0 |
ai.onnx |
Softplus |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Softsign |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
SpaceToDepth |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Split |
yes |
no |
yes |
no |
16 |
0 |
ai.onnx |
SplitToSequence |
yes |
yes |
yes |
no |
3 |
0 |
ai.onnx |
Sqrt |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Squeeze |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
StringConcat |
yes |
yes |
yes |
yes |
5 |
5 |
ai.onnx |
StringNormalizer |
yes |
yes |
yes |
no |
6 |
0 |
ai.onnx |
StringSplit |
yes |
yes |
yes |
no |
6 |
0 |
ai.onnx |
Sub |
yes |
yes |
yes |
no |
11 |
5 |
ai.onnx |
Sum |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Swish |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Tan |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Tanh |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
TensorScatter |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
TfIdfVectorizer |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
ThresholdedRelu |
yes |
no |
yes |
no |
3 |
0 |
ai.onnx |
Tile |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
TopK |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
Transpose |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
Trilu |
yes |
no |
yes |
no |
18 |
0 |
ai.onnx |
Unique |
yes |
no |
yes |
no |
6 |
0 |
ai.onnx |
Unsqueeze |
yes |
no |
yes |
no |
7 |
0 |
ai.onnx |
Upsample |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx |
Where |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx |
Xor |
yes |
yes |
yes |
no |
8 |
10 |
ai.onnx.ml |
ArrayFeatureExtractor |
yes |
no |
yes |
no |
1 |
0 |
ai.onnx.ml |
Binarizer |
yes |
yes |
yes |
yes |
1 |
2 |
ai.onnx.ml |
CastMap |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
CategoryMapper |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
DictVectorizer |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
FeatureVectorizer |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
Imputer |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
LabelEncoder |
yes |
yes |
yes |
yes |
4 |
2 |
ai.onnx.ml |
LinearClassifier |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
LinearRegressor |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
Normalizer |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
OneHotEncoder |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
SVMClassifier |
yes |
no |
yes |
no |
0 |
0 |
ai.onnx.ml |
SVMRegressor |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
Scaler |
yes |
no |
no |
no |
0 |
0 |
ai.onnx.ml |
TreeEnsemble |
yes |
yes |
yes |
no |
2 |
0 |
ai.onnx.ml |
TreeEnsembleClassifier |
yes |
yes |
no |
no |
0 |
0 |
ai.onnx.ml |
TreeEnsembleRegressor |
yes |
yes |
no |
no |
0 |
0 |
ai.onnx.ml |
ZipMap |
yes |
yes |
yes |
no |
0 |
0 |
ai.onnx.preview |
FlexAttention |
no |
yes |
no |
yes |
0 |
2 |
ai.onnx.preview.training |
Adagrad |
yes |
no |
yes |
no |
2 |
0 |
ai.onnx.preview.training |
Adam |
yes |
yes |
yes |
yes |
2 |
4 |
ai.onnx.preview.training |
Gradient |
yes |
yes |
no |
no |
0 |
0 |
ai.onnx.preview.training |
Momentum |
yes |
no |
yes |
no |
3 |
0 |