onnx 1.16.2__cp310-cp310-win32.whl → 1.17.0__cp310-cp310-win32.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of onnx might be problematic. Click here for more details.
- onnx/__init__.py +3 -1
- onnx/_custom_element_types.py +63 -0
- onnx/backend/base.py +17 -15
- onnx/backend/sample/ops/__init__.py +4 -4
- onnx/backend/sample/ops/abs.py +1 -0
- onnx/backend/test/__init__.py +1 -0
- onnx/backend/test/case/__init__.py +2 -2
- onnx/backend/test/case/base.py +6 -5
- onnx/backend/test/case/model/__init__.py +4 -3
- onnx/backend/test/case/model/expand.py +1 -0
- onnx/backend/test/case/model/gradient.py +1 -0
- onnx/backend/test/case/model/sequence.py +3 -1
- onnx/backend/test/case/model/shrink.py +1 -0
- onnx/backend/test/case/model/sign.py +1 -0
- onnx/backend/test/case/model/single-relu.py +1 -0
- onnx/backend/test/case/model/stringnormalizer.py +1 -1
- onnx/backend/test/case/node/__init__.py +31 -22
- onnx/backend/test/case/node/_image_decoder_data.py +1 -0
- onnx/backend/test/case/node/abs.py +1 -0
- onnx/backend/test/case/node/acos.py +1 -0
- onnx/backend/test/case/node/acosh.py +1 -0
- onnx/backend/test/case/node/adagrad.py +2 -1
- onnx/backend/test/case/node/adam.py +4 -1
- onnx/backend/test/case/node/add.py +1 -0
- onnx/backend/test/case/node/affinegrid.py +1 -0
- onnx/backend/test/case/node/ai_onnx_ml/array_feature_extractor.py +1 -0
- onnx/backend/test/case/node/ai_onnx_ml/binarizer.py +1 -0
- onnx/backend/test/case/node/ai_onnx_ml/label_encoder.py +1 -0
- onnx/backend/test/case/node/ai_onnx_ml/tree_ensemble.py +1 -0
- onnx/backend/test/case/node/and.py +1 -0
- onnx/backend/test/case/node/argmax.py +1 -0
- onnx/backend/test/case/node/argmin.py +1 -0
- onnx/backend/test/case/node/asin.py +1 -0
- onnx/backend/test/case/node/asinh.py +1 -0
- onnx/backend/test/case/node/atan.py +1 -0
- onnx/backend/test/case/node/atanh.py +1 -0
- onnx/backend/test/case/node/averagepool.py +1 -0
- onnx/backend/test/case/node/batchnorm.py +1 -0
- onnx/backend/test/case/node/bernoulli.py +1 -0
- onnx/backend/test/case/node/bitshift.py +1 -0
- onnx/backend/test/case/node/bitwiseand.py +1 -0
- onnx/backend/test/case/node/bitwisenot.py +1 -0
- onnx/backend/test/case/node/bitwiseor.py +1 -0
- onnx/backend/test/case/node/bitwisexor.py +1 -0
- onnx/backend/test/case/node/blackmanwindow.py +13 -3
- onnx/backend/test/case/node/cast.py +2 -1
- onnx/backend/test/case/node/castlike.py +1 -0
- onnx/backend/test/case/node/ceil.py +1 -0
- onnx/backend/test/case/node/celu.py +1 -0
- onnx/backend/test/case/node/center_crop_pad.py +1 -0
- onnx/backend/test/case/node/clip.py +1 -0
- onnx/backend/test/case/node/col2im.py +1 -1
- onnx/backend/test/case/node/compress.py +1 -0
- onnx/backend/test/case/node/concat.py +3 -2
- onnx/backend/test/case/node/constant.py +1 -0
- onnx/backend/test/case/node/constantofshape.py +1 -0
- onnx/backend/test/case/node/conv.py +1 -0
- onnx/backend/test/case/node/convinteger.py +1 -0
- onnx/backend/test/case/node/convtranspose.py +135 -0
- onnx/backend/test/case/node/cos.py +1 -0
- onnx/backend/test/case/node/cosh.py +1 -0
- onnx/backend/test/case/node/cumsum.py +1 -0
- onnx/backend/test/case/node/deformconv.py +17 -26
- onnx/backend/test/case/node/depthtospace.py +1 -0
- onnx/backend/test/case/node/dequantizelinear.py +1 -0
- onnx/backend/test/case/node/det.py +1 -0
- onnx/backend/test/case/node/dft.py +1 -0
- onnx/backend/test/case/node/div.py +1 -0
- onnx/backend/test/case/node/dropout.py +1 -0
- onnx/backend/test/case/node/dynamicquantizelinear.py +1 -0
- onnx/backend/test/case/node/einsum.py +2 -3
- onnx/backend/test/case/node/elu.py +1 -0
- onnx/backend/test/case/node/equal.py +1 -0
- onnx/backend/test/case/node/erf.py +1 -0
- onnx/backend/test/case/node/exp.py +1 -0
- onnx/backend/test/case/node/expand.py +1 -0
- onnx/backend/test/case/node/eyelike.py +1 -0
- onnx/backend/test/case/node/flatten.py +1 -0
- onnx/backend/test/case/node/floor.py +1 -0
- onnx/backend/test/case/node/gather.py +1 -0
- onnx/backend/test/case/node/gatherelements.py +1 -0
- onnx/backend/test/case/node/gathernd.py +1 -0
- onnx/backend/test/case/node/gelu.py +1 -0
- onnx/backend/test/case/node/gemm.py +3 -4
- onnx/backend/test/case/node/globalaveragepool.py +1 -0
- onnx/backend/test/case/node/globalmaxpool.py +1 -0
- onnx/backend/test/case/node/greater.py +1 -0
- onnx/backend/test/case/node/greater_equal.py +1 -0
- onnx/backend/test/case/node/gridsample.py +1 -0
- onnx/backend/test/case/node/groupnormalization.py +1 -0
- onnx/backend/test/case/node/gru.py +3 -2
- onnx/backend/test/case/node/hammingwindow.py +13 -2
- onnx/backend/test/case/node/hannwindow.py +10 -2
- onnx/backend/test/case/node/hardmax.py +1 -0
- onnx/backend/test/case/node/hardsigmoid.py +1 -0
- onnx/backend/test/case/node/hardswish.py +1 -0
- onnx/backend/test/case/node/identity.py +1 -0
- onnx/backend/test/case/node/if.py +1 -0
- onnx/backend/test/case/node/instancenorm.py +1 -0
- onnx/backend/test/case/node/isinf.py +1 -0
- onnx/backend/test/case/node/isnan.py +1 -0
- onnx/backend/test/case/node/layernormalization.py +1 -0
- onnx/backend/test/case/node/leakyrelu.py +1 -0
- onnx/backend/test/case/node/less.py +1 -0
- onnx/backend/test/case/node/less_equal.py +1 -0
- onnx/backend/test/case/node/log.py +1 -0
- onnx/backend/test/case/node/logsoftmax.py +1 -0
- onnx/backend/test/case/node/loop.py +4 -3
- onnx/backend/test/case/node/lppool.py +1 -0
- onnx/backend/test/case/node/lrn.py +1 -0
- onnx/backend/test/case/node/lstm.py +3 -2
- onnx/backend/test/case/node/matmul.py +1 -0
- onnx/backend/test/case/node/matmulinteger.py +1 -0
- onnx/backend/test/case/node/max.py +1 -0
- onnx/backend/test/case/node/maxpool.py +1 -0
- onnx/backend/test/case/node/maxunpool.py +1 -0
- onnx/backend/test/case/node/mean.py +1 -0
- onnx/backend/test/case/node/meanvariancenormalization.py +1 -0
- onnx/backend/test/case/node/melweightmatrix.py +1 -0
- onnx/backend/test/case/node/min.py +1 -0
- onnx/backend/test/case/node/mish.py +1 -0
- onnx/backend/test/case/node/mod.py +1 -0
- onnx/backend/test/case/node/momentum.py +1 -0
- onnx/backend/test/case/node/mul.py +1 -0
- onnx/backend/test/case/node/neg.py +1 -0
- onnx/backend/test/case/node/negativeloglikelihoodloss.py +4 -1
- onnx/backend/test/case/node/nonmaxsuppression.py +1 -0
- onnx/backend/test/case/node/nonzero.py +1 -0
- onnx/backend/test/case/node/not.py +1 -0
- onnx/backend/test/case/node/onehot.py +1 -0
- onnx/backend/test/case/node/optionalgetelement.py +3 -2
- onnx/backend/test/case/node/optionalhaselement.py +2 -3
- onnx/backend/test/case/node/or.py +1 -0
- onnx/backend/test/case/node/pad.py +2 -1
- onnx/backend/test/case/node/pow.py +1 -0
- onnx/backend/test/case/node/prelu.py +1 -0
- onnx/backend/test/case/node/qlinearconv.py +1 -0
- onnx/backend/test/case/node/qlinearmatmul.py +1 -0
- onnx/backend/test/case/node/quantizelinear.py +1 -0
- onnx/backend/test/case/node/rangeop.py +1 -0
- onnx/backend/test/case/node/reciprocal.py +1 -0
- onnx/backend/test/case/node/reduce_log_sum.py +1 -0
- onnx/backend/test/case/node/reduce_log_sum_exp.py +1 -0
- onnx/backend/test/case/node/reducel1.py +1 -0
- onnx/backend/test/case/node/reducel2.py +1 -0
- onnx/backend/test/case/node/reducemax.py +2 -1
- onnx/backend/test/case/node/reducemean.py +1 -0
- onnx/backend/test/case/node/reducemin.py +1 -0
- onnx/backend/test/case/node/reduceprod.py +1 -0
- onnx/backend/test/case/node/reducesum.py +2 -1
- onnx/backend/test/case/node/reducesumsquare.py +1 -0
- onnx/backend/test/case/node/regex_full_match.py +1 -0
- onnx/backend/test/case/node/relu.py +1 -0
- onnx/backend/test/case/node/reshape.py +1 -0
- onnx/backend/test/case/node/resize.py +3 -2
- onnx/backend/test/case/node/reversesequence.py +1 -0
- onnx/backend/test/case/node/rnn.py +3 -2
- onnx/backend/test/case/node/roialign.py +1 -0
- onnx/backend/test/case/node/round.py +4 -3
- onnx/backend/test/case/node/scan.py +1 -0
- onnx/backend/test/case/node/scatter.py +1 -0
- onnx/backend/test/case/node/scatterelements.py +7 -3
- onnx/backend/test/case/node/scatternd.py +1 -0
- onnx/backend/test/case/node/selu.py +1 -0
- onnx/backend/test/case/node/sequence_map.py +1 -0
- onnx/backend/test/case/node/sequenceinsert.py +4 -3
- onnx/backend/test/case/node/shape.py +1 -0
- onnx/backend/test/case/node/shrink.py +1 -0
- onnx/backend/test/case/node/sigmoid.py +1 -0
- onnx/backend/test/case/node/sign.py +1 -0
- onnx/backend/test/case/node/sin.py +1 -0
- onnx/backend/test/case/node/sinh.py +1 -0
- onnx/backend/test/case/node/size.py +1 -0
- onnx/backend/test/case/node/slice.py +1 -0
- onnx/backend/test/case/node/softmax.py +1 -0
- onnx/backend/test/case/node/softmaxcrossentropy.py +4 -1
- onnx/backend/test/case/node/softplus.py +1 -0
- onnx/backend/test/case/node/softsign.py +1 -0
- onnx/backend/test/case/node/spacetodepth.py +1 -0
- onnx/backend/test/case/node/split.py +1 -0
- onnx/backend/test/case/node/splittosequence.py +1 -0
- onnx/backend/test/case/node/sqrt.py +1 -0
- onnx/backend/test/case/node/squeeze.py +1 -0
- onnx/backend/test/case/node/stft.py +4 -1
- onnx/backend/test/case/node/string_concat.py +1 -0
- onnx/backend/test/case/node/string_split.py +1 -0
- onnx/backend/test/case/node/stringnormalizer.py +1 -0
- onnx/backend/test/case/node/sub.py +1 -0
- onnx/backend/test/case/node/sum.py +1 -0
- onnx/backend/test/case/node/tan.py +1 -0
- onnx/backend/test/case/node/tanh.py +1 -0
- onnx/backend/test/case/node/tfidfvectorizer.py +1 -0
- onnx/backend/test/case/node/thresholdedrelu.py +1 -0
- onnx/backend/test/case/node/tile.py +1 -0
- onnx/backend/test/case/node/topk.py +1 -0
- onnx/backend/test/case/node/transpose.py +1 -0
- onnx/backend/test/case/node/trilu.py +1 -0
- onnx/backend/test/case/node/unique.py +7 -0
- onnx/backend/test/case/node/unsqueeze.py +1 -0
- onnx/backend/test/case/node/upsample.py +1 -0
- onnx/backend/test/case/node/where.py +1 -0
- onnx/backend/test/case/node/xor.py +1 -0
- onnx/backend/test/case/test_case.py +6 -5
- onnx/backend/test/case/utils.py +2 -2
- onnx/backend/test/cmd_tools.py +1 -0
- onnx/backend/test/data/node/test_acos/model.onnx +0 -0
- onnx/backend/test/data/node/test_acos/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_acos_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_acosh/model.onnx +0 -0
- onnx/backend/test/data/node/test_acosh/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_acosh_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_asin/model.onnx +0 -0
- onnx/backend/test/data/node/test_asin/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_asin_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_asinh/model.onnx +0 -0
- onnx/backend/test/data/node/test_asinh/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_asinh_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_atan/model.onnx +0 -0
- onnx/backend/test/data/node/test_atan/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_atan_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_atanh/model.onnx +0 -0
- onnx/backend/test/data/node/test_atanh/test_data_set_0/output_0.pb +2 -2
- onnx/backend/test/data/node/test_atanh_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_1d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_ceil/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_dilations/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_pads_count_include_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_precomputed_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_precomputed_pads_count_include_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_precomputed_same_upper/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_precomputed_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_same_lower/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_same_upper/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_2d_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_False/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_False/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_True/model.onnx +0 -0
- onnx/backend/test/data/node/test_averagepool_3d_dilations_small/model.onnx +0 -0
- onnx/backend/test/data/node/test_basic_conv_with_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_basic_conv_without_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_basic_deform_conv_with_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_basic_deform_conv_without_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli_double/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli_double_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli_seed/model.onnx +0 -0
- onnx/backend/test/data/node/test_bernoulli_seed_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_blackmanwindow/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_blackmanwindow_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_blackmanwindow_symmetric/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_blackmanwindow_symmetric_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_conv_with_autopad_same/model.onnx +0 -0
- onnx/backend/test/data/node/test_conv_with_strides_and_asymmetric_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_conv_with_strides_no_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_conv_with_strides_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_1d/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_3d/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_autopad_same/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_dilations/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2_image_3/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_convtranspose_kernel_shape/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_output_shape/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_convtranspose_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_cos/model.onnx +0 -0
- onnx/backend/test/data/node/test_cos_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_cosh/model.onnx +0 -0
- onnx/backend/test/data/node/test_cosh/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_cosh_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_cosh_example/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_deform_conv_with_mask_bias/model.onnx +0 -0
- onnx/backend/test/data/node/test_deform_conv_with_multiple_offset_groups/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_det_2d/model.onnx +0 -0
- onnx/backend/test/data/node/test_det_nd/model.onnx +0 -0
- onnx/backend/test/data/node/test_dft/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dft_axis/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dft_axis_opset19/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dft_inverse/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dft_inverse_opset19/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dft_opset19/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dropout_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_dropout_default_mask/model.onnx +0 -0
- onnx/backend/test/data/node/test_dropout_default_mask_ratio/model.onnx +0 -0
- onnx/backend/test/data/node/test_dropout_default_ratio/model.onnx +0 -0
- onnx/backend/test/data/node/test_elu/model.onnx +0 -0
- onnx/backend/test/data/node/test_elu_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_elu_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_eyelike_populate_off_main_diagonal/model.onnx +0 -0
- onnx/backend/test/data/node/test_eyelike_with_dtype/model.onnx +0 -0
- onnx/backend/test/data/node/test_eyelike_without_dtype/model.onnx +0 -0
- onnx/backend/test/data/node/test_gelu_default_1/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_gelu_default_1_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_gelu_default_2/test_data_set_0/output_0.pb +4 -3
- onnx/backend/test/data/node/test_gelu_default_2_expanded/test_data_set_0/output_0.pb +4 -3
- onnx/backend/test/data/node/test_gelu_tanh_2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_gelu_tanh_2_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_globalaveragepool/model.onnx +0 -0
- onnx/backend/test/data/node/test_globalaveragepool_precomputed/model.onnx +0 -0
- onnx/backend/test/data/node/test_globalmaxpool/model.onnx +0 -0
- onnx/backend/test/data/node/test_globalmaxpool_precomputed/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_aligncorners_true/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bicubic/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bicubic_align_corners_0_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bicubic_align_corners_1_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bilinear/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bilinear_align_corners_0_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_bilinear_align_corners_1_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_border_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_nearest/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_nearest_align_corners_0_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_nearest_align_corners_1_additional_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_reflection_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_volumetric_bilinear_align_corners_0/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_volumetric_bilinear_align_corners_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_volumetric_nearest_align_corners_0/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_volumetric_nearest_align_corners_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_gridsample_zeros_padding/model.onnx +0 -0
- onnx/backend/test/data/node/test_gru_batchwise/model.onnx +0 -0
- onnx/backend/test/data/node/test_gru_defaults/model.onnx +0 -0
- onnx/backend/test/data/node/test_gru_seq_length/model.onnx +0 -0
- onnx/backend/test/data/node/test_gru_with_initial_bias/model.onnx +0 -0
- onnx/backend/test/data/node/test_hammingwindow/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hammingwindow_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hammingwindow_symmetric/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_hammingwindow_symmetric_expanded/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_hannwindow/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hannwindow_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hannwindow_symmetric/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hannwindow_symmetric_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_hardsigmoid/model.onnx +0 -0
- onnx/backend/test/data/node/test_hardsigmoid_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_hardsigmoid_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_hardswish/model.onnx +0 -0
- onnx/backend/test/data/node/test_hardswish_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_image_decoder_decode_jpeg2k_rgb/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_instancenorm_epsilon/model.onnx +0 -0
- onnx/backend/test/data/node/test_instancenorm_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_1d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_1d_default/test_data_set_0/output_0.pb +2 -2
- onnx/backend/test/data/node/test_lppool_2d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_default/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lppool_2d_dilations/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_pads/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lppool_2d_same_lower/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_same_lower/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lppool_2d_same_upper/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_same_upper/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lppool_2d_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_2d_strides/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lppool_3d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_lppool_3d_default/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_lstm_batchwise/model.onnx +0 -0
- onnx/backend/test/data/node/test_lstm_defaults/model.onnx +0 -0
- onnx/backend/test/data/node/test_lstm_with_initial_bias/model.onnx +0 -0
- onnx/backend/test/data/node/test_lstm_with_peepholes/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_1d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_ceil/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_dilations/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_precomputed_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_precomputed_same_upper/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_precomputed_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_same_lower/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_same_upper/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_uint8/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_3d_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_3d_dilations/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_3d_dilations_use_ref_impl/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_3d_dilations_use_ref_impl_large/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_with_argmax_2d_precomputed_pads/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxpool_with_argmax_2d_precomputed_strides/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxunpool_export_with_output_shape/model.onnx +0 -0
- onnx/backend/test/data/node/test_maxunpool_export_without_output_shape/model.onnx +0 -0
- onnx/backend/test/data/node/test_mish/model.onnx +0 -0
- onnx/backend/test/data/node/test_mish/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_mish_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_mish_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_nllloss_NC/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NC_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_mean_weight_negative_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_mean_weight_negative_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_weight/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_weight_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_weight_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1_weight_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_no_weight_reduction_mean_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_no_weight_reduction_mean_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_mean/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_mean_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_sum/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_sum_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_mean/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_mean_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3_none_no_weight_negative_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3_none_no_weight_negative_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3_sum_weight_high_ii/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3_sum_weight_high_ii_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_mean_weight/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_mean_weight_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_none_no_weight/model.onnx +0 -0
- onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_none_no_weight_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_do_not_keepdims_random/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_do_not_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_keepdims_random/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_negative_axes_keepdims_random/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_log_sum_exp_negative_axes_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_reduce_max_empty_set/model.onnx +0 -0
- onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/model.onnx +0 -0
- onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/model.onnx +0 -0
- onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize/model.onnx +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/model.onnx +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_larger/model.onnx +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_larger/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/model.onnx +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_rnn_seq_length/model.onnx +0 -0
- onnx/backend/test/data/node/test_roialign_aligned_false/model.onnx +0 -0
- onnx/backend/test/data/node/test_roialign_aligned_true/model.onnx +0 -0
- onnx/backend/test/data/node/test_roialign_mode_max/model.onnx +0 -0
- onnx/backend/test/data/node/test_round/model.onnx +0 -0
- onnx/backend/test/data/node/test_selu/model.onnx +0 -0
- onnx/backend/test/data/node/test_selu_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_selu_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_simple_rnn_batchwise/model.onnx +0 -0
- onnx/backend/test/data/node/test_simple_rnn_defaults/model.onnx +0 -0
- onnx/backend/test/data/node/test_simple_rnn_with_initial_bias/model.onnx +0 -0
- onnx/backend/test/data/node/test_sin/model.onnx +0 -0
- onnx/backend/test/data/node/test_sin_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_sinh/model.onnx +0 -0
- onnx/backend/test/data/node/test_sinh/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_sinh_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_softplus/model.onnx +0 -0
- onnx/backend/test/data/node/test_softplus_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_softsign/model.onnx +0 -0
- onnx/backend/test/data/node/test_softsign_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_stft_with_window/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_stft_with_window/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_tan/model.onnx +0 -0
- onnx/backend/test/data/node/test_tan/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_tan_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_thresholdedrelu/model.onnx +0 -0
- onnx/backend/test/data/node/test_thresholdedrelu_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_thresholdedrelu_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout_default_mask/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout_mask/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout_zero_ratio/model.onnx +0 -0
- onnx/backend/test/data/node/test_training_dropout_zero_ratio_mask/model.onnx +0 -0
- onnx/backend/test/loader/__init__.py +11 -6
- onnx/backend/test/report/__init__.py +4 -3
- onnx/backend/test/report/base.py +1 -0
- onnx/backend/test/report/coverage.py +21 -20
- onnx/backend/test/runner/__init__.py +12 -8
- onnx/backend/test/runner/item.py +3 -2
- onnx/backend/test/stat_coverage.py +6 -5
- onnx/bin/checker.py +1 -0
- onnx/checker.cc +6 -1
- onnx/common/version.h +1 -1
- onnx/compose.py +66 -50
- onnx/cpp2py_export.cc +4 -0
- onnx/defs/__init__.py +2 -2
- onnx/defs/data_type_utils.cc +0 -1
- onnx/defs/gen_doc.py +9 -8
- onnx/defs/gen_shape_inference_information.py +1 -0
- onnx/defs/generator/defs.cc +32 -84
- onnx/defs/generator/old.cc +389 -0
- onnx/defs/math/defs.cc +308 -313
- onnx/defs/math/old.cc +989 -7
- onnx/defs/math/utils.cc +12 -1
- onnx/defs/math/utils.h +2 -0
- onnx/defs/nn/defs.cc +57 -75
- onnx/defs/nn/old.cc +1536 -2
- onnx/defs/object_detection/defs.cc +4 -7
- onnx/defs/object_detection/old.cc +117 -0
- onnx/defs/operator_sets.h +108 -1
- onnx/defs/parser.cc +10 -1
- onnx/defs/quantization/defs.cc +3 -2
- onnx/defs/quantization/old.cc +4 -1
- onnx/defs/rnn/defs.cc +10 -13
- onnx/defs/rnn/old.cc +517 -2
- onnx/defs/schema.cc +53 -59
- onnx/defs/schema.h +58 -2
- onnx/defs/shape_inference.h +67 -18
- onnx/defs/tensor/defs.cc +22 -20
- onnx/defs/tensor/old.cc +111 -0
- onnx/external_data_helper.py +27 -14
- onnx/gen_proto.py +3 -2
- onnx/helper.py +86 -61
- onnx/hub.py +30 -28
- onnx/inliner/inliner.cc +0 -1
- onnx/mapping.py +3 -2
- onnx/numpy_helper.py +159 -23
- onnx/onnx-ml.proto +1 -1
- onnx/onnx.in.proto +1 -1
- onnx/onnx.proto +1 -1
- onnx/onnx_cpp2py_export/defs.pyi +0 -2
- onnx/onnx_cpp2py_export/inliner.pyi +0 -4
- onnx/onnx_cpp2py_export/parser.pyi +0 -4
- onnx/onnx_cpp2py_export.cp310-win32.pyd +0 -0
- onnx/parser.py +1 -0
- onnx/printer.py +2 -3
- onnx/reference/__init__.py +1 -0
- onnx/reference/custom_element_types.py +73 -8
- onnx/reference/op_run.py +13 -58
- onnx/reference/ops/__init__.py +1 -0
- onnx/reference/ops/_helpers.py +6 -4
- onnx/reference/ops/_op.py +16 -5
- onnx/reference/ops/_op_common_indices.py +1 -1
- onnx/reference/ops/_op_common_pool.py +38 -29
- onnx/reference/ops/_op_common_random.py +1 -1
- onnx/reference/ops/_op_common_window.py +2 -2
- onnx/reference/ops/_op_list.py +9 -6
- onnx/reference/ops/aionnx_preview_training/__init__.py +1 -0
- onnx/reference/ops/aionnx_preview_training/_op_list.py +5 -7
- onnx/reference/ops/aionnx_preview_training/_op_run_training.py +1 -1
- onnx/reference/ops/aionnx_preview_training/op_adagrad.py +14 -5
- onnx/reference/ops/aionnx_preview_training/op_adam.py +2 -2
- onnx/reference/ops/aionnx_preview_training/op_momentum.py +14 -2
- onnx/reference/ops/aionnxml/__init__.py +1 -0
- onnx/reference/ops/aionnxml/_common_classifier.py +1 -0
- onnx/reference/ops/aionnxml/_op_list.py +5 -6
- onnx/reference/ops/aionnxml/_op_run_aionnxml.py +1 -1
- onnx/reference/ops/aionnxml/op_array_feature_extractor.py +1 -1
- onnx/reference/ops/aionnxml/op_binarizer.py +1 -1
- onnx/reference/ops/aionnxml/op_dict_vectorizer.py +2 -2
- onnx/reference/ops/aionnxml/op_feature_vectorizer.py +1 -1
- onnx/reference/ops/aionnxml/op_imputer.py +3 -3
- onnx/reference/ops/aionnxml/op_label_encoder.py +1 -1
- onnx/reference/ops/aionnxml/op_linear_classifier.py +2 -2
- onnx/reference/ops/aionnxml/op_linear_regressor.py +1 -1
- onnx/reference/ops/aionnxml/op_normalizer.py +1 -1
- onnx/reference/ops/aionnxml/op_one_hot_encoder.py +1 -1
- onnx/reference/ops/aionnxml/op_scaler.py +1 -1
- onnx/reference/ops/aionnxml/op_svm_classifier.py +10 -7
- onnx/reference/ops/aionnxml/op_svm_helper.py +2 -2
- onnx/reference/ops/aionnxml/op_svm_regressor.py +1 -1
- onnx/reference/ops/aionnxml/op_tree_ensemble.py +3 -3
- onnx/reference/ops/aionnxml/op_tree_ensemble_classifier.py +1 -1
- onnx/reference/ops/aionnxml/op_tree_ensemble_helper.py +2 -2
- onnx/reference/ops/aionnxml/op_tree_ensemble_regressor.py +5 -3
- onnx/reference/ops/experimental/__init__.py +1 -0
- onnx/reference/ops/experimental/_op_list.py +6 -12
- onnx/reference/ops/experimental/_op_run_experimental.py +1 -1
- onnx/reference/ops/experimental/op_im2col.py +1 -1
- onnx/reference/ops/op_abs.py +1 -1
- onnx/reference/ops/op_acos.py +1 -1
- onnx/reference/ops/op_acosh.py +1 -1
- onnx/reference/ops/op_add.py +1 -1
- onnx/reference/ops/op_affine_grid.py +1 -1
- onnx/reference/ops/op_and.py +1 -1
- onnx/reference/ops/op_argmax.py +1 -1
- onnx/reference/ops/op_argmin.py +1 -1
- onnx/reference/ops/op_asin.py +1 -1
- onnx/reference/ops/op_asinh.py +1 -1
- onnx/reference/ops/op_atan.py +1 -1
- onnx/reference/ops/op_atanh.py +1 -1
- onnx/reference/ops/op_attribute_has_value.py +15 -15
- onnx/reference/ops/op_average_pool.py +1 -1
- onnx/reference/ops/op_batch_normalization.py +13 -2
- onnx/reference/ops/op_bernoulli.py +1 -1
- onnx/reference/ops/op_bitshift.py +1 -1
- onnx/reference/ops/op_bitwise_and.py +1 -1
- onnx/reference/ops/op_bitwise_not.py +1 -1
- onnx/reference/ops/op_bitwise_or.py +1 -1
- onnx/reference/ops/op_bitwise_xor.py +1 -1
- onnx/reference/ops/op_blackman_window.py +1 -1
- onnx/reference/ops/op_cast.py +11 -10
- onnx/reference/ops/op_cast_like.py +1 -1
- onnx/reference/ops/op_ceil.py +1 -1
- onnx/reference/ops/op_celu.py +1 -1
- onnx/reference/ops/op_center_crop_pad.py +1 -1
- onnx/reference/ops/op_clip.py +1 -1
- onnx/reference/ops/op_col2im.py +10 -4
- onnx/reference/ops/op_compress.py +1 -1
- onnx/reference/ops/op_concat.py +1 -1
- onnx/reference/ops/op_concat_from_sequence.py +3 -3
- onnx/reference/ops/op_constant.py +2 -2
- onnx/reference/ops/op_constant_of_shape.py +1 -1
- onnx/reference/ops/op_conv.py +22 -17
- onnx/reference/ops/op_conv_integer.py +1 -1
- onnx/reference/ops/op_conv_transpose.py +37 -6
- onnx/reference/ops/op_cos.py +1 -1
- onnx/reference/ops/op_cosh.py +1 -1
- onnx/reference/ops/op_cum_sum.py +1 -1
- onnx/reference/ops/op_deform_conv.py +1 -1
- onnx/reference/ops/op_depth_to_space.py +1 -1
- onnx/reference/ops/op_dequantize_linear.py +7 -9
- onnx/reference/ops/op_det.py +1 -1
- onnx/reference/ops/op_dft.py +16 -2
- onnx/reference/ops/op_div.py +1 -1
- onnx/reference/ops/op_dropout.py +9 -8
- onnx/reference/ops/op_dynamic_quantize_linear.py +1 -1
- onnx/reference/ops/op_einsum.py +1 -1
- onnx/reference/ops/op_elu.py +1 -1
- onnx/reference/ops/op_equal.py +1 -1
- onnx/reference/ops/op_erf.py +1 -1
- onnx/reference/ops/op_exp.py +1 -1
- onnx/reference/ops/op_expand.py +1 -1
- onnx/reference/ops/op_eyelike.py +2 -2
- onnx/reference/ops/op_flatten.py +1 -1
- onnx/reference/ops/op_floor.py +1 -1
- onnx/reference/ops/op_gather.py +1 -1
- onnx/reference/ops/op_gather_elements.py +3 -3
- onnx/reference/ops/op_gathernd.py +2 -4
- onnx/reference/ops/op_gemm.py +12 -2
- onnx/reference/ops/op_global_average_pool.py +1 -1
- onnx/reference/ops/op_global_max_pool.py +1 -1
- onnx/reference/ops/op_greater.py +1 -1
- onnx/reference/ops/op_greater_or_equal.py +1 -1
- onnx/reference/ops/op_grid_sample.py +2 -3
- onnx/reference/ops/op_gru.py +7 -7
- onnx/reference/ops/op_hamming_window.py +1 -1
- onnx/reference/ops/op_hann_window.py +1 -1
- onnx/reference/ops/op_hard_sigmoid.py +1 -1
- onnx/reference/ops/op_hardmax.py +5 -2
- onnx/reference/ops/op_identity.py +3 -3
- onnx/reference/ops/op_if.py +2 -2
- onnx/reference/ops/op_instance_normalization.py +1 -1
- onnx/reference/ops/op_isinf.py +1 -1
- onnx/reference/ops/op_isnan.py +1 -1
- onnx/reference/ops/op_layer_normalization.py +2 -4
- onnx/reference/ops/op_leaky_relu.py +1 -1
- onnx/reference/ops/op_less.py +1 -1
- onnx/reference/ops/op_less_or_equal.py +1 -1
- onnx/reference/ops/op_log.py +1 -1
- onnx/reference/ops/op_log_softmax.py +1 -1
- onnx/reference/ops/op_loop.py +4 -2
- onnx/reference/ops/op_lp_normalization.py +1 -1
- onnx/reference/ops/op_lp_pool.py +4 -2
- onnx/reference/ops/op_lrn.py +1 -1
- onnx/reference/ops/op_lstm.py +9 -11
- onnx/reference/ops/op_matmul.py +1 -1
- onnx/reference/ops/op_matmul_integer.py +1 -1
- onnx/reference/ops/op_max.py +1 -1
- onnx/reference/ops/op_max_pool.py +8 -8
- onnx/reference/ops/op_max_unpool.py +5 -3
- onnx/reference/ops/op_mean.py +1 -1
- onnx/reference/ops/op_mel_weight_matrix.py +1 -1
- onnx/reference/ops/op_min.py +1 -1
- onnx/reference/ops/op_mod.py +1 -1
- onnx/reference/ops/op_mul.py +1 -1
- onnx/reference/ops/op_neg.py +1 -1
- onnx/reference/ops/op_negative_log_likelihood_loss.py +4 -2
- onnx/reference/ops/op_non_max_suppression.py +10 -11
- onnx/reference/ops/op_non_zero.py +1 -1
- onnx/reference/ops/op_not.py +1 -1
- onnx/reference/ops/op_one_hot.py +1 -1
- onnx/reference/ops/op_optional.py +1 -1
- onnx/reference/ops/op_optional_get_element.py +1 -1
- onnx/reference/ops/op_optional_has_element.py +1 -1
- onnx/reference/ops/op_or.py +1 -1
- onnx/reference/ops/op_pad.py +1 -1
- onnx/reference/ops/op_pool_common.py +7 -6
- onnx/reference/ops/op_pow.py +1 -1
- onnx/reference/ops/op_prelu.py +3 -3
- onnx/reference/ops/op_qlinear_conv.py +1 -1
- onnx/reference/ops/op_qlinear_matmul.py +1 -1
- onnx/reference/ops/op_quantize_linear.py +15 -9
- onnx/reference/ops/op_random_normal.py +1 -1
- onnx/reference/ops/op_random_normal_like.py +1 -1
- onnx/reference/ops/op_random_uniform.py +1 -1
- onnx/reference/ops/op_random_uniform_like.py +1 -1
- onnx/reference/ops/op_range.py +1 -1
- onnx/reference/ops/op_reciprocal.py +1 -1
- onnx/reference/ops/op_reduce_l1.py +1 -1
- onnx/reference/ops/op_reduce_l2.py +1 -1
- onnx/reference/ops/op_reduce_log_sum.py +1 -1
- onnx/reference/ops/op_reduce_log_sum_exp.py +1 -1
- onnx/reference/ops/op_reduce_max.py +1 -1
- onnx/reference/ops/op_reduce_mean.py +2 -2
- onnx/reference/ops/op_reduce_min.py +1 -1
- onnx/reference/ops/op_reduce_prod.py +1 -1
- onnx/reference/ops/op_reduce_sum.py +2 -2
- onnx/reference/ops/op_reduce_sum_square.py +1 -1
- onnx/reference/ops/op_regex_full_match.py +1 -1
- onnx/reference/ops/op_relu.py +1 -1
- onnx/reference/ops/op_reshape.py +1 -1
- onnx/reference/ops/op_reverse_sequence.py +1 -1
- onnx/reference/ops/op_rnn.py +10 -8
- onnx/reference/ops/op_roi_align.py +5 -5
- onnx/reference/ops/op_round.py +1 -1
- onnx/reference/ops/op_scan.py +8 -8
- onnx/reference/ops/op_scatter_elements.py +19 -50
- onnx/reference/ops/op_scatternd.py +1 -1
- onnx/reference/ops/op_selu.py +1 -1
- onnx/reference/ops/op_sequence_at.py +1 -1
- onnx/reference/ops/op_sequence_construct.py +1 -1
- onnx/reference/ops/op_sequence_empty.py +2 -2
- onnx/reference/ops/op_sequence_erase.py +1 -1
- onnx/reference/ops/op_sequence_insert.py +6 -6
- onnx/reference/ops/op_sequence_length.py +1 -1
- onnx/reference/ops/op_sequence_map.py +1 -1
- onnx/reference/ops/op_shape.py +2 -6
- onnx/reference/ops/op_shrink.py +1 -1
- onnx/reference/ops/op_sigmoid.py +1 -1
- onnx/reference/ops/op_sign.py +1 -1
- onnx/reference/ops/op_sin.py +1 -1
- onnx/reference/ops/op_sinh.py +1 -1
- onnx/reference/ops/op_size.py +1 -1
- onnx/reference/ops/op_slice.py +3 -5
- onnx/reference/ops/op_softmax.py +1 -1
- onnx/reference/ops/op_softmax_cross_entropy_loss.py +1 -1
- onnx/reference/ops/op_softplus.py +1 -1
- onnx/reference/ops/op_softsign.py +1 -1
- onnx/reference/ops/op_space_to_depth.py +1 -1
- onnx/reference/ops/op_split.py +1 -1
- onnx/reference/ops/op_split_to_sequence.py +5 -7
- onnx/reference/ops/op_sqrt.py +1 -1
- onnx/reference/ops/op_squeeze.py +1 -1
- onnx/reference/ops/op_stft.py +3 -2
- onnx/reference/ops/op_string_concat.py +1 -1
- onnx/reference/ops/op_string_normalizer.py +8 -8
- onnx/reference/ops/op_string_split.py +2 -4
- onnx/reference/ops/op_sub.py +1 -1
- onnx/reference/ops/op_sum.py +1 -1
- onnx/reference/ops/op_tan.py +1 -1
- onnx/reference/ops/op_tanh.py +1 -1
- onnx/reference/ops/op_tfidf_vectorizer.py +11 -12
- onnx/reference/ops/op_thresholded_relu.py +1 -1
- onnx/reference/ops/op_tile.py +1 -1
- onnx/reference/ops/op_topk.py +7 -2
- onnx/reference/ops/op_transpose.py +1 -1
- onnx/reference/ops/op_trilu.py +1 -1
- onnx/reference/ops/op_unique.py +3 -1
- onnx/reference/ops/op_unsqueeze.py +2 -2
- onnx/reference/ops/op_upsample.py +1 -1
- onnx/reference/ops/op_where.py +1 -1
- onnx/reference/ops/op_xor.py +1 -1
- onnx/reference/ops_optimized/__init__.py +1 -0
- onnx/reference/ops_optimized/op_conv_optimized.py +1 -1
- onnx/reference/reference_evaluator.py +27 -13
- onnx/serialization.py +1 -1
- onnx/shape_inference/implementation.cc +15 -1
- onnx/shape_inference/implementation.h +15 -1
- onnx/shape_inference.py +1 -1
- onnx/subbyte.py +6 -6
- onnx/test/basic_test.py +1 -0
- onnx/test/checker_test.py +37 -2
- onnx/test/compose_test.py +12 -11
- onnx/test/cpp/schema_registration_test.cc +3 -3
- onnx/test/cpp/shape_inference_test.cc +38 -2
- onnx/test/elu_test.py +2 -0
- onnx/test/function_inference_test.py +2 -0
- onnx/test/function_test.py +1 -0
- onnx/test/helper_test.py +77 -16
- onnx/test/hub_test.py +1 -1
- onnx/test/inference_function_test.py +25 -8
- onnx/test/inliner_test.py +2 -0
- onnx/test/model_container_refeval_test.py +2 -1
- onnx/test/model_container_test.py +1 -0
- onnx/test/model_inference_test.py +2 -0
- onnx/test/numpy_helper_test.py +56 -1
- onnx/test/parser_test.py +48 -2
- onnx/test/printer_test.py +2 -0
- onnx/test/reference_evaluator_ml_test.py +2 -3
- onnx/test/reference_evaluator_model_test.py +2 -0
- onnx/test/reference_evaluator_test.py +173 -19
- onnx/test/relu_test.py +2 -0
- onnx/test/schema_test.py +4 -2
- onnx/test/serialization_test.py +2 -0
- onnx/test/shape_inference_test.py +349 -19
- onnx/test/symbolic_shape_test.py +3 -3
- onnx/test/test_backend_onnxruntime.py +272 -1
- onnx/test/test_backend_reference.py +24 -3
- onnx/test/test_backend_test.py +6 -5
- onnx/test/test_external_data.py +91 -2
- onnx/test/test_with_ort.py +1 -0
- onnx/test/tools_test.py +15 -14
- onnx/test/training_tool_test.py +1 -0
- onnx/test/utils_test.py +1 -0
- onnx/test/version_converter/automatic_downgrade_test.py +2 -0
- onnx/test/version_converter/automatic_upgrade_test.py +2 -0
- onnx/test/version_converter_test.py +26 -7
- onnx/test/version_utils.py +8 -0
- onnx/tools/net_drawer.py +6 -5
- onnx/tools/replace_constants.py +11 -11
- onnx/tools/update_model_dims.py +7 -6
- onnx/utils.py +41 -21
- onnx/version.py +2 -2
- onnx/version_converter/adapters/split_17_18.h +1 -1
- onnx/version_converter/convert.h +107 -2
- onnx/version_converter.py +3 -2
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/METADATA +9 -12
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/RECORD +843 -817
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/WHEEL +1 -1
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/LICENSE +0 -0
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/entry_points.txt +0 -0
- {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/top_level.txt +0 -0
onnx/numpy_helper.py
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
# Copyright (c) ONNX Project Contributors
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
4
|
+
from __future__ import annotations
|
|
5
5
|
|
|
6
6
|
import sys
|
|
7
|
-
from typing import Any,
|
|
7
|
+
from typing import Any, Sequence
|
|
8
8
|
|
|
9
9
|
import numpy as np
|
|
10
10
|
|
|
11
|
+
import onnx._custom_element_types as custom_np_types
|
|
11
12
|
from onnx import MapProto, OptionalProto, SequenceProto, TensorProto, helper, subbyte
|
|
12
13
|
from onnx.external_data_helper import load_external_data_for_tensor, uses_external_data
|
|
13
14
|
|
|
14
15
|
|
|
15
|
-
def combine_pairs_to_complex(fa: Sequence[int]) ->
|
|
16
|
+
def combine_pairs_to_complex(fa: Sequence[int]) -> list[complex]:
|
|
16
17
|
return [complex(fa[i * 2], fa[i * 2 + 1]) for i in range(len(fa) // 2)]
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
def bfloat16_to_float32(
|
|
20
|
-
data:
|
|
21
|
-
dims:
|
|
21
|
+
data: np.int16 | np.int32 | np.ndarray,
|
|
22
|
+
dims: int | Sequence[int] | None = None,
|
|
22
23
|
) -> np.ndarray:
|
|
23
24
|
"""Converts ndarray of bf16 (as uint32) to f32 (as uint32).
|
|
24
25
|
|
|
@@ -55,6 +56,7 @@ def _float8e4m3_to_float32_scalar(ival: int, fn: bool, uz: bool) -> np.float32:
|
|
|
55
56
|
if ival == 127: # noqa: PLR2004
|
|
56
57
|
return np.float32(np.nan)
|
|
57
58
|
|
|
59
|
+
ival = np.uint32(ival) # type: ignore[assignment]
|
|
58
60
|
expo = (ival & 0x78) >> 3
|
|
59
61
|
mant = ival & 0x07
|
|
60
62
|
sign = ival & 0x80
|
|
@@ -86,8 +88,8 @@ _float8e4m3_to_float32 = np.vectorize(
|
|
|
86
88
|
|
|
87
89
|
|
|
88
90
|
def float8e4m3_to_float32(
|
|
89
|
-
data:
|
|
90
|
-
dims:
|
|
91
|
+
data: np.int16 | np.int32 | np.ndarray,
|
|
92
|
+
dims: int | Sequence[int] | None = None,
|
|
91
93
|
fn: bool = True,
|
|
92
94
|
uz: bool = False,
|
|
93
95
|
) -> np.ndarray:
|
|
@@ -133,6 +135,7 @@ def _float8e5m2_to_float32_scalar(ival: int, fn: bool, uz: bool) -> np.float32:
|
|
|
133
135
|
else:
|
|
134
136
|
raise NotImplementedError("fn and uz must be both False or True.")
|
|
135
137
|
|
|
138
|
+
ival = np.uint32(ival) # type: ignore[assignment]
|
|
136
139
|
expo = (ival & 0x7C) >> 2
|
|
137
140
|
mant = ival & 0x03
|
|
138
141
|
sign = ival & 0x80
|
|
@@ -160,8 +163,8 @@ _float8e5m2_to_float32 = np.vectorize(
|
|
|
160
163
|
|
|
161
164
|
|
|
162
165
|
def float8e5m2_to_float32(
|
|
163
|
-
data:
|
|
164
|
-
dims:
|
|
166
|
+
data: np.int16 | np.int32 | np.ndarray,
|
|
167
|
+
dims: int | Sequence[int] | None = None,
|
|
165
168
|
fn: bool = False,
|
|
166
169
|
uz: bool = False,
|
|
167
170
|
) -> np.ndarray:
|
|
@@ -186,8 +189,8 @@ def float8e5m2_to_float32(
|
|
|
186
189
|
|
|
187
190
|
|
|
188
191
|
def unpack_int4(
|
|
189
|
-
data:
|
|
190
|
-
dims:
|
|
192
|
+
data: np.int32 | np.ndarray,
|
|
193
|
+
dims: int | Sequence[int],
|
|
191
194
|
signed: bool,
|
|
192
195
|
) -> np.ndarray:
|
|
193
196
|
"""Converts ndarray of int4 (as packed uint8) to f32
|
|
@@ -218,7 +221,7 @@ def unpack_int4(
|
|
|
218
221
|
return res
|
|
219
222
|
|
|
220
223
|
|
|
221
|
-
def
|
|
224
|
+
def _to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray: # noqa: PLR0911
|
|
222
225
|
"""Converts a tensor def object to a numpy array.
|
|
223
226
|
|
|
224
227
|
Args:
|
|
@@ -332,7 +335,79 @@ def to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray: # noqa: PL
|
|
|
332
335
|
return np.asarray(data, dtype=storage_np_dtype).astype(np_dtype).reshape(dims)
|
|
333
336
|
|
|
334
337
|
|
|
335
|
-
def
|
|
338
|
+
def to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray:
|
|
339
|
+
"""Converts a tensor def object to a numpy array.
|
|
340
|
+
Supports types defined in :mod:`onnx._custom_element_types`.
|
|
341
|
+
|
|
342
|
+
Args:
|
|
343
|
+
tensor: a TensorProto object.
|
|
344
|
+
base_dir: if external tensor exists, base_dir can help to find the path to it
|
|
345
|
+
|
|
346
|
+
Returns:
|
|
347
|
+
arr: the converted array.
|
|
348
|
+
"""
|
|
349
|
+
elem_type = tensor.data_type
|
|
350
|
+
if elem_type == TensorProto.BFLOAT16:
|
|
351
|
+
if uses_external_data(tensor):
|
|
352
|
+
load_external_data_for_tensor(tensor, base_dir)
|
|
353
|
+
data = tensor.int32_data
|
|
354
|
+
shape = tuple(tensor.dims)
|
|
355
|
+
y = np.empty(shape, dtype=custom_np_types.bfloat16).ravel()
|
|
356
|
+
for i, d in enumerate(data):
|
|
357
|
+
y[i] = d
|
|
358
|
+
return y.reshape(shape)
|
|
359
|
+
|
|
360
|
+
if elem_type in (
|
|
361
|
+
TensorProto.FLOAT8E4M3FN,
|
|
362
|
+
TensorProto.FLOAT8E4M3FNUZ,
|
|
363
|
+
TensorProto.FLOAT8E5M2,
|
|
364
|
+
TensorProto.FLOAT8E5M2FNUZ,
|
|
365
|
+
):
|
|
366
|
+
m = {
|
|
367
|
+
TensorProto.FLOAT8E4M3FN: custom_np_types.float8e4m3fn,
|
|
368
|
+
TensorProto.FLOAT8E4M3FNUZ: custom_np_types.float8e4m3fnuz,
|
|
369
|
+
TensorProto.FLOAT8E5M2: custom_np_types.float8e5m2,
|
|
370
|
+
TensorProto.FLOAT8E5M2FNUZ: custom_np_types.float8e5m2fnuz,
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
if uses_external_data(tensor):
|
|
374
|
+
load_external_data_for_tensor(tensor, base_dir)
|
|
375
|
+
if tensor.HasField("raw_data"):
|
|
376
|
+
data = tensor.raw_data # type: ignore[assignment]
|
|
377
|
+
else:
|
|
378
|
+
data = tensor.int32_data
|
|
379
|
+
shape = tuple(tensor.dims)
|
|
380
|
+
y = np.empty(shape, dtype=m[elem_type]).ravel() # type: ignore[index]
|
|
381
|
+
for i, d in enumerate(data):
|
|
382
|
+
y[i] = d
|
|
383
|
+
return y.reshape(shape)
|
|
384
|
+
|
|
385
|
+
if elem_type in (TensorProto.UINT4, TensorProto.INT4):
|
|
386
|
+
if uses_external_data(tensor):
|
|
387
|
+
load_external_data_for_tensor(tensor, base_dir)
|
|
388
|
+
if tensor.HasField("raw_data"):
|
|
389
|
+
data = tensor.raw_data # type: ignore[assignment]
|
|
390
|
+
else:
|
|
391
|
+
data = tensor.int32_data
|
|
392
|
+
shape = tuple(tensor.dims)
|
|
393
|
+
m = {
|
|
394
|
+
TensorProto.INT4: custom_np_types.int4,
|
|
395
|
+
TensorProto.UINT4: custom_np_types.uint4,
|
|
396
|
+
}
|
|
397
|
+
dtype = m[elem_type] # type: ignore[index]
|
|
398
|
+
signed = elem_type == TensorProto.INT4
|
|
399
|
+
# 2 packed int4 elements must be represented as a single uint8 value.
|
|
400
|
+
# Therefore, y is np.uint8 (not the dtype to which the int4 maps)
|
|
401
|
+
y = np.empty(len(data), dtype=np.uint8).ravel() # type: ignore[assignment]
|
|
402
|
+
for i, d in enumerate(data):
|
|
403
|
+
y[i] = d
|
|
404
|
+
unpacked_data = unpack_int4(y, dims=shape, signed=signed)
|
|
405
|
+
return unpacked_data.astype(dtype)
|
|
406
|
+
|
|
407
|
+
return _to_array(tensor, base_dir=base_dir)
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
def _from_array(arr: np.ndarray, name: str | None = None) -> TensorProto:
|
|
336
411
|
"""Converts a numpy array to a tensor def.
|
|
337
412
|
|
|
338
413
|
Args:
|
|
@@ -352,7 +427,7 @@ def from_array(arr: np.ndarray, name: Optional[str] = None) -> TensorProto:
|
|
|
352
427
|
if name:
|
|
353
428
|
tensor.name = name
|
|
354
429
|
|
|
355
|
-
if arr.dtype == object:
|
|
430
|
+
if arr.dtype == object or np.issubdtype(arr.dtype, np.str_):
|
|
356
431
|
# Special care for strings.
|
|
357
432
|
tensor.data_type = helper.np_dtype_to_tensor_dtype(arr.dtype)
|
|
358
433
|
# TODO: Introduce full string support.
|
|
@@ -397,7 +472,68 @@ def from_array(arr: np.ndarray, name: Optional[str] = None) -> TensorProto:
|
|
|
397
472
|
return tensor
|
|
398
473
|
|
|
399
474
|
|
|
400
|
-
def
|
|
475
|
+
def from_array(tensor: np.ndarray, name: str | None = None) -> TensorProto:
|
|
476
|
+
"""Converts an array into a TensorProto including
|
|
477
|
+
supported type defined in :mod:`onnx._custom_element_types`.
|
|
478
|
+
|
|
479
|
+
Args:
|
|
480
|
+
tensor: a numpy array.
|
|
481
|
+
name: (optional) the name of the tensor.
|
|
482
|
+
|
|
483
|
+
Returns:
|
|
484
|
+
TensorProto: the converted tensor def.
|
|
485
|
+
"""
|
|
486
|
+
if not isinstance(tensor, np.ndarray):
|
|
487
|
+
return _from_array(tensor, name)
|
|
488
|
+
|
|
489
|
+
dt = tensor.dtype
|
|
490
|
+
if dt == custom_np_types.float8e4m3fn and dt.descr[0][0] == "e4m3fn":
|
|
491
|
+
to = TensorProto.FLOAT8E4M3FN
|
|
492
|
+
dt_to = np.uint8 # type: ignore[assignment]
|
|
493
|
+
elif dt == custom_np_types.float8e4m3fnuz and dt.descr[0][0] == "e4m3fnuz":
|
|
494
|
+
to = TensorProto.FLOAT8E4M3FNUZ
|
|
495
|
+
dt_to = np.uint8 # type: ignore[assignment]
|
|
496
|
+
elif dt == custom_np_types.float8e5m2 and dt.descr[0][0] == "e5m2":
|
|
497
|
+
to = TensorProto.FLOAT8E5M2
|
|
498
|
+
dt_to = np.uint8 # type: ignore[assignment]
|
|
499
|
+
elif dt == custom_np_types.float8e5m2fnuz and dt.descr[0][0] == "e5m2fnuz":
|
|
500
|
+
to = TensorProto.FLOAT8E5M2FNUZ
|
|
501
|
+
dt_to = np.uint8 # type: ignore[assignment]
|
|
502
|
+
elif dt == custom_np_types.bfloat16 and dt.descr[0][0] == "bfloat16":
|
|
503
|
+
to = TensorProto.BFLOAT16
|
|
504
|
+
dt_to = np.uint16 # type: ignore[assignment]
|
|
505
|
+
elif dt == custom_np_types.int4 and dt.descr[0][0] == "int4":
|
|
506
|
+
to = TensorProto.INT4
|
|
507
|
+
dt_to = np.int8 # type: ignore[assignment]
|
|
508
|
+
elif dt == custom_np_types.uint4 and dt.descr[0][0] == "uint4":
|
|
509
|
+
to = TensorProto.UINT4
|
|
510
|
+
dt_to = np.uint8 # type: ignore[assignment]
|
|
511
|
+
else:
|
|
512
|
+
return _from_array(tensor, name)
|
|
513
|
+
|
|
514
|
+
if to in (TensorProto.UINT4, TensorProto.INT4):
|
|
515
|
+
value = tensor.astype(dt_to).ravel()
|
|
516
|
+
if value.size % 2 == 1:
|
|
517
|
+
raise ValueError(
|
|
518
|
+
f"The conversion of a tensor of INT4 or UINT4 requires an even size "
|
|
519
|
+
f"(shape={tensor.shape}). Every byte stores two INT4 or two UINT4."
|
|
520
|
+
)
|
|
521
|
+
buffer = (value[::2] & 0x0F) + (value[1::2] << 4)
|
|
522
|
+
|
|
523
|
+
pb = TensorProto()
|
|
524
|
+
pb.dims.extend(tensor.shape)
|
|
525
|
+
if name:
|
|
526
|
+
pb.name = name
|
|
527
|
+
pb.raw_data = buffer.tobytes()
|
|
528
|
+
pb.data_type = to
|
|
529
|
+
return pb
|
|
530
|
+
|
|
531
|
+
t = _from_array(tensor.astype(dt_to), name)
|
|
532
|
+
t.data_type = to
|
|
533
|
+
return t
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
def to_list(sequence: SequenceProto) -> list[Any]:
|
|
401
537
|
"""Converts a sequence def to a Python list.
|
|
402
538
|
|
|
403
539
|
Args:
|
|
@@ -419,7 +555,7 @@ def to_list(sequence: SequenceProto) -> List[Any]:
|
|
|
419
555
|
|
|
420
556
|
|
|
421
557
|
def from_list(
|
|
422
|
-
lst:
|
|
558
|
+
lst: list[Any], name: str | None = None, dtype: int | None = None
|
|
423
559
|
) -> SequenceProto:
|
|
424
560
|
"""Converts a list into a sequence def.
|
|
425
561
|
|
|
@@ -475,7 +611,7 @@ def from_list(
|
|
|
475
611
|
return sequence
|
|
476
612
|
|
|
477
613
|
|
|
478
|
-
def to_dict(map_proto: MapProto) ->
|
|
614
|
+
def to_dict(map_proto: MapProto) -> dict[Any, Any]:
|
|
479
615
|
"""Converts a map def to a Python dictionary.
|
|
480
616
|
|
|
481
617
|
Args:
|
|
@@ -484,7 +620,7 @@ def to_dict(map_proto: MapProto) -> Dict[Any, Any]:
|
|
|
484
620
|
Returns:
|
|
485
621
|
The converted dictionary.
|
|
486
622
|
"""
|
|
487
|
-
key_list:
|
|
623
|
+
key_list: list[Any] = []
|
|
488
624
|
if map_proto.key_type == TensorProto.STRING:
|
|
489
625
|
key_list = list(map_proto.string_keys)
|
|
490
626
|
else:
|
|
@@ -501,7 +637,7 @@ def to_dict(map_proto: MapProto) -> Dict[Any, Any]:
|
|
|
501
637
|
return dictionary
|
|
502
638
|
|
|
503
639
|
|
|
504
|
-
def from_dict(dict_:
|
|
640
|
+
def from_dict(dict_: dict[Any, Any], name: str | None = None) -> MapProto:
|
|
505
641
|
"""Converts a Python dictionary into a map def.
|
|
506
642
|
|
|
507
643
|
Args:
|
|
@@ -559,7 +695,7 @@ def from_dict(dict_: Dict[Any, Any], name: Optional[str] = None) -> MapProto:
|
|
|
559
695
|
return map_proto
|
|
560
696
|
|
|
561
697
|
|
|
562
|
-
def to_optional(optional: OptionalProto) ->
|
|
698
|
+
def to_optional(optional: OptionalProto) -> Any | None:
|
|
563
699
|
"""Converts an optional def to a Python optional.
|
|
564
700
|
|
|
565
701
|
Args:
|
|
@@ -585,7 +721,7 @@ def to_optional(optional: OptionalProto) -> Optional[Any]:
|
|
|
585
721
|
|
|
586
722
|
|
|
587
723
|
def from_optional(
|
|
588
|
-
opt:
|
|
724
|
+
opt: Any | None, name: str | None = None, dtype: int | None = None
|
|
589
725
|
) -> OptionalProto:
|
|
590
726
|
"""Converts an optional value into a Optional def.
|
|
591
727
|
|
|
@@ -637,7 +773,7 @@ def from_optional(
|
|
|
637
773
|
|
|
638
774
|
|
|
639
775
|
def convert_endian(tensor: TensorProto) -> None:
|
|
640
|
-
"""Call to convert
|
|
776
|
+
"""Call to convert endianness of raw data in tensor.
|
|
641
777
|
|
|
642
778
|
Args:
|
|
643
779
|
tensor: TensorProto to be converted.
|
|
@@ -650,7 +786,7 @@ def convert_endian(tensor: TensorProto) -> None:
|
|
|
650
786
|
|
|
651
787
|
|
|
652
788
|
def create_random_int(
|
|
653
|
-
input_shape:
|
|
789
|
+
input_shape: tuple[int], dtype: np.dtype, seed: int = 1
|
|
654
790
|
) -> np.ndarray:
|
|
655
791
|
"""Create random integer array for backend/test/case/node.
|
|
656
792
|
|
onnx/onnx-ml.proto
CHANGED
|
@@ -212,7 +212,7 @@ message NodeProto {
|
|
|
212
212
|
repeated string output = 2; // namespace Value
|
|
213
213
|
|
|
214
214
|
// An optional identifier for this node in a graph.
|
|
215
|
-
// This field MAY be absent in
|
|
215
|
+
// This field MAY be absent in this version of the IR.
|
|
216
216
|
optional string name = 3; // namespace Node
|
|
217
217
|
|
|
218
218
|
// The symbolic identifier of the Operator to execute.
|
onnx/onnx.in.proto
CHANGED
|
@@ -209,7 +209,7 @@ message NodeProto {
|
|
|
209
209
|
repeated string output = 2; // namespace Value
|
|
210
210
|
|
|
211
211
|
// An optional identifier for this node in a graph.
|
|
212
|
-
// This field MAY be absent in
|
|
212
|
+
// This field MAY be absent in this version of the IR.
|
|
213
213
|
optional string name = 3; // namespace Node
|
|
214
214
|
|
|
215
215
|
// The symbolic identifier of the Operator to execute.
|
onnx/onnx.proto
CHANGED
|
@@ -210,7 +210,7 @@ message NodeProto {
|
|
|
210
210
|
repeated string output = 2; // namespace Value
|
|
211
211
|
|
|
212
212
|
// An optional identifier for this node in a graph.
|
|
213
|
-
// This field MAY be absent in
|
|
213
|
+
// This field MAY be absent in this version of the IR.
|
|
214
214
|
optional string name = 3; // namespace Node
|
|
215
215
|
|
|
216
216
|
// The symbolic identifier of the Operator to execute.
|
onnx/onnx_cpp2py_export/defs.pyi
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
|
-
from __future__ import annotations
|
|
6
|
-
|
|
7
5
|
def inline_local_functions(model: bytes, convert_version: bool) -> bytes:
|
|
8
6
|
"""Inlines calls to model-local function in input model and returns it.
|
|
9
7
|
Both input and output are serialized ModelProtos.
|
|
10
8
|
"""
|
|
11
|
-
...
|
|
12
9
|
|
|
13
10
|
def inline_selected_functions(model: bytes, function_ids: list[tuple[str,str]], exclude: bool) -> bytes:
|
|
14
11
|
"""Inlines calls to selected model-local functions in input model and returns it.
|
|
@@ -16,4 +13,3 @@ def inline_selected_functions(model: bytes, function_ids: list[tuple[str,str]],
|
|
|
16
13
|
case it inlines all functions except those specified in function_ids.
|
|
17
14
|
Both input and output are serialized ModelProtos.
|
|
18
15
|
"""
|
|
19
|
-
...
|
|
@@ -5,7 +5,6 @@ def parse_model(model: str) -> tuple[bool, bytes, bytes]:
|
|
|
5
5
|
If success-flag is true, then serialized-proto contains the parsed ModelProto.
|
|
6
6
|
Otherwise, error-message contains a string describing the parse error.
|
|
7
7
|
"""
|
|
8
|
-
...
|
|
9
8
|
|
|
10
9
|
def parse_graph(graph: str) -> tuple[bool, bytes, bytes]:
|
|
11
10
|
"""Returns (success-flag, error-message, serialized-proto).
|
|
@@ -13,7 +12,6 @@ def parse_graph(graph: str) -> tuple[bool, bytes, bytes]:
|
|
|
13
12
|
If success-flag is true, then serialized-proto contains the parsed GraphProto.
|
|
14
13
|
Otherwise, error-message contains a string describing the parse error.
|
|
15
14
|
"""
|
|
16
|
-
...
|
|
17
15
|
|
|
18
16
|
def parse_function(function: str) -> tuple[bool, bytes, bytes]:
|
|
19
17
|
"""Returns (success-flag, error-message, serialized-proto).
|
|
@@ -21,7 +19,6 @@ def parse_function(function: str) -> tuple[bool, bytes, bytes]:
|
|
|
21
19
|
If success-flag is true, then serialized-proto contains the parsed FunctionProto.
|
|
22
20
|
Otherwise, error-message contains a string describing the parse error.
|
|
23
21
|
"""
|
|
24
|
-
...
|
|
25
22
|
|
|
26
23
|
def parse_node(node: str) -> tuple[bool, bytes, bytes]:
|
|
27
24
|
"""Returns (success-flag, error-message, serialized-proto).
|
|
@@ -29,4 +26,3 @@ def parse_node(node: str) -> tuple[bool, bytes, bytes]:
|
|
|
29
26
|
If success-flag is true, then serialized-proto contains the parsed NodeProto.
|
|
30
27
|
Otherwise, error-message contains a string describing the parse error.
|
|
31
28
|
"""
|
|
32
|
-
...
|
|
Binary file
|
onnx/parser.py
CHANGED
onnx/printer.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
# Copyright (c) ONNX Project Contributors
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
from typing import Union
|
|
4
|
+
from __future__ import annotations
|
|
6
5
|
|
|
7
6
|
import onnx
|
|
8
7
|
import onnx.onnx_cpp2py_export.printer as C # noqa: N812
|
|
9
8
|
|
|
10
9
|
|
|
11
|
-
def to_text(proto:
|
|
10
|
+
def to_text(proto: onnx.ModelProto | onnx.FunctionProto | onnx.GraphProto) -> str:
|
|
12
11
|
if isinstance(proto, onnx.ModelProto):
|
|
13
12
|
return C.model_to_text(proto.SerializeToString())
|
|
14
13
|
if isinstance(proto, onnx.FunctionProto):
|
onnx/reference/__init__.py
CHANGED
|
@@ -1,13 +1,78 @@
|
|
|
1
1
|
# Copyright (c) ONNX Project Contributors
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
from __future__ import annotations
|
|
4
5
|
|
|
5
6
|
import numpy as np
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
try:
|
|
9
|
+
import ml_dtypes
|
|
10
|
+
except ImportError:
|
|
11
|
+
ml_dtypes = None # type: ignore[assignment]
|
|
12
|
+
|
|
13
|
+
from onnx._custom_element_types import (
|
|
14
|
+
bfloat16,
|
|
15
|
+
float8e4m3fn,
|
|
16
|
+
float8e4m3fnuz,
|
|
17
|
+
float8e5m2,
|
|
18
|
+
float8e5m2fnuz,
|
|
19
|
+
int4,
|
|
20
|
+
uint4,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
_supported_types = [
|
|
24
|
+
(bfloat16, "bfloat16", "bfloat16"),
|
|
25
|
+
(float8e4m3fn, "e4m3fn", "float8_e4m3fn"),
|
|
26
|
+
(float8e4m3fnuz, "e4m3fnuz", "float8_e4m3fnuz"),
|
|
27
|
+
(float8e5m2, "e5m2", "float8_e5m2"),
|
|
28
|
+
(float8e5m2fnuz, "e5m2fnuz", "float8_e5m2fnuz"),
|
|
29
|
+
(int4, "int4", "int4"),
|
|
30
|
+
(uint4, "uint4", "uint4"),
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def convert_from_ml_dtypes(array: np.ndarray) -> np.ndarray:
|
|
35
|
+
"""Detects the type and changes into one of the ONNX
|
|
36
|
+
defined custom types when ``ml_dtypes`` is installed.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
array: Numpy array with a dtype from ml_dtypes.
|
|
40
|
+
|
|
41
|
+
Returns:
|
|
42
|
+
numpy array
|
|
43
|
+
"""
|
|
44
|
+
if not ml_dtypes:
|
|
45
|
+
return array
|
|
46
|
+
for dtype, _, ml_name in _supported_types:
|
|
47
|
+
if array.dtype == getattr(ml_dtypes, ml_name):
|
|
48
|
+
return array.view(dtype=dtype)
|
|
49
|
+
return array
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def convert_to_ml_dtypes(array: np.ndarray) -> np.ndarray:
|
|
53
|
+
"""Detects the type and changes into one of the type
|
|
54
|
+
defined in ``ml_dtypes`` if installed.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
array: array
|
|
58
|
+
|
|
59
|
+
Returns:
|
|
60
|
+
numpy Numpy array with a dtype from ml_dtypes.
|
|
61
|
+
"""
|
|
62
|
+
new_dt = None
|
|
63
|
+
|
|
64
|
+
for dtype, name, ml_name in _supported_types:
|
|
65
|
+
if array.dtype == dtype and array.dtype.descr[0][0] == name:
|
|
66
|
+
assert ml_dtypes, (
|
|
67
|
+
f"ml_dtypes is not installed and the tensor cannot "
|
|
68
|
+
f"be converted into ml_dtypes.{array.dtype.descr[0][0]}"
|
|
69
|
+
)
|
|
70
|
+
new_dt = getattr(ml_dtypes, ml_name)
|
|
71
|
+
break
|
|
72
|
+
|
|
73
|
+
if new_dt:
|
|
74
|
+
# int4, uint4, the representation uses 1 byte per element,
|
|
75
|
+
# only onnx storage uses 1 byte for two elements
|
|
76
|
+
return array.view(dtype=new_dt)
|
|
77
|
+
|
|
78
|
+
return array
|
onnx/reference/op_run.py
CHANGED
|
@@ -9,11 +9,7 @@ from typing import Any, ClassVar, Iterable
|
|
|
9
9
|
import numpy as np
|
|
10
10
|
|
|
11
11
|
from onnx import TensorProto
|
|
12
|
-
from onnx.
|
|
13
|
-
from onnx.helper import make_node, make_tensor_type_proto, np_dtype_to_tensor_dtype
|
|
14
|
-
from onnx.numpy_helper import to_array, unpack_int4
|
|
15
|
-
from onnx.onnx_pb import AttributeProto, GraphProto, NodeProto, TypeProto
|
|
16
|
-
from onnx.reference.custom_element_types import (
|
|
12
|
+
from onnx._custom_element_types import (
|
|
17
13
|
bfloat16,
|
|
18
14
|
float8e4m3fn,
|
|
19
15
|
float8e4m3fnuz,
|
|
@@ -22,6 +18,10 @@ from onnx.reference.custom_element_types import (
|
|
|
22
18
|
int4,
|
|
23
19
|
uint4,
|
|
24
20
|
)
|
|
21
|
+
from onnx.defs import get_all_schemas_with_history, get_schema, onnx_opset_version
|
|
22
|
+
from onnx.helper import make_node, make_tensor_type_proto, np_dtype_to_tensor_dtype
|
|
23
|
+
from onnx.numpy_helper import to_array
|
|
24
|
+
from onnx.onnx_pb import AttributeProto, GraphProto, NodeProto, TypeProto
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def _split_class_name(name): # type: ignore
|
|
@@ -121,55 +121,7 @@ def to_sparse_tensor(att: AttributeProto) -> SparseTensor:
|
|
|
121
121
|
|
|
122
122
|
|
|
123
123
|
def to_array_extended(tensor: TensorProto) -> np.ndarray:
|
|
124
|
-
"""
|
|
125
|
-
float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz, uint4, int4.
|
|
126
|
-
"""
|
|
127
|
-
elem_type = tensor.data_type
|
|
128
|
-
if elem_type == TensorProto.BFLOAT16:
|
|
129
|
-
data = tensor.int32_data
|
|
130
|
-
shape = tuple(tensor.dims)
|
|
131
|
-
y = np.empty(shape, dtype=bfloat16).ravel()
|
|
132
|
-
for i, d in enumerate(data):
|
|
133
|
-
y[i] = d
|
|
134
|
-
return y.reshape(shape)
|
|
135
|
-
|
|
136
|
-
if elem_type in (
|
|
137
|
-
TensorProto.FLOAT8E4M3FN,
|
|
138
|
-
TensorProto.FLOAT8E4M3FNUZ,
|
|
139
|
-
TensorProto.FLOAT8E5M2,
|
|
140
|
-
TensorProto.FLOAT8E5M2FNUZ,
|
|
141
|
-
):
|
|
142
|
-
m = {
|
|
143
|
-
TensorProto.FLOAT8E4M3FN: float8e4m3fn,
|
|
144
|
-
TensorProto.FLOAT8E4M3FNUZ: float8e4m3fnuz,
|
|
145
|
-
TensorProto.FLOAT8E5M2: float8e5m2,
|
|
146
|
-
TensorProto.FLOAT8E5M2FNUZ: float8e5m2fnuz,
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
if tensor.HasField("raw_data"):
|
|
150
|
-
data = tensor.raw_data # type: ignore[assignment]
|
|
151
|
-
else:
|
|
152
|
-
data = tensor.int32_data
|
|
153
|
-
shape = tuple(tensor.dims)
|
|
154
|
-
y = np.empty(shape, dtype=m[elem_type]).ravel() # type: ignore[index]
|
|
155
|
-
for i, d in enumerate(data):
|
|
156
|
-
y[i] = d
|
|
157
|
-
return y.reshape(shape)
|
|
158
|
-
if elem_type in (TensorProto.UINT4, TensorProto.INT4):
|
|
159
|
-
if tensor.HasField("raw_data"):
|
|
160
|
-
data = tensor.raw_data # type: ignore[assignment]
|
|
161
|
-
else:
|
|
162
|
-
data = tensor.int32_data
|
|
163
|
-
shape = tuple(tensor.dims)
|
|
164
|
-
m = {TensorProto.INT4: int4, TensorProto.UINT4: uint4}
|
|
165
|
-
dtype = m[elem_type] # type: ignore[index]
|
|
166
|
-
signed = elem_type == TensorProto.INT4
|
|
167
|
-
y = np.empty(len(data), dtype=dtype).ravel()
|
|
168
|
-
for i, d in enumerate(data):
|
|
169
|
-
y[i] = d
|
|
170
|
-
|
|
171
|
-
unpacked_data = unpack_int4(y, dims=shape, signed=signed)
|
|
172
|
-
return unpacked_data.astype(dtype)
|
|
124
|
+
"""Alias for :func:`to_array`."""
|
|
173
125
|
return to_array(tensor)
|
|
174
126
|
|
|
175
127
|
|
|
@@ -652,13 +604,16 @@ class OpRunExpand(OpRun):
|
|
|
652
604
|
"""Class any operator to avoid must inherit from."""
|
|
653
605
|
|
|
654
606
|
def __init__(
|
|
655
|
-
self,
|
|
607
|
+
self,
|
|
608
|
+
onnx_node: NodeProto, # noqa: ARG002
|
|
609
|
+
run_params: dict[str, Any], # noqa: ARG002
|
|
610
|
+
impl: Any = None, # noqa: ARG002
|
|
656
611
|
):
|
|
657
612
|
raise RuntimeError(
|
|
658
613
|
f"The reference implementation must not use this node ({type(self)})."
|
|
659
614
|
)
|
|
660
615
|
|
|
661
|
-
def _run(self, *inputs, **kwargs):
|
|
616
|
+
def _run(self, *inputs, **kwargs): # noqa: ARG002
|
|
662
617
|
raise RuntimeError(
|
|
663
618
|
f"The reference implementation must not use this node ({type(self)})."
|
|
664
619
|
)
|
|
@@ -735,7 +690,7 @@ class OpFunctionContextDependant(OpFunction):
|
|
|
735
690
|
for t in inputs:
|
|
736
691
|
try:
|
|
737
692
|
ttype = np_dtype_to_tensor_dtype(t.dtype)
|
|
738
|
-
except KeyError
|
|
693
|
+
except KeyError:
|
|
739
694
|
if t.dtype == float8e4m3fn:
|
|
740
695
|
ttype = TensorProto.FLOAT8E4M3FN # type: ignore[attr-defined]
|
|
741
696
|
elif t.dtype == float8e4m3fnuz:
|
|
@@ -751,7 +706,7 @@ class OpFunctionContextDependant(OpFunction):
|
|
|
751
706
|
elif t.dtype == int4:
|
|
752
707
|
ttype = TensorProto.INT4 # type: ignore[attr-defined]
|
|
753
708
|
else:
|
|
754
|
-
raise
|
|
709
|
+
raise
|
|
755
710
|
types.append(make_tensor_type_proto(ttype, t.shape))
|
|
756
711
|
cl = self.parent._load_impl(self.onnx_node, types)
|
|
757
712
|
inst = cl(self.onnx_node, self.run_params)
|
onnx/reference/ops/__init__.py
CHANGED
onnx/reference/ops/_helpers.py
CHANGED
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
# Copyright (c) ONNX Project Contributors
|
|
4
4
|
#
|
|
5
5
|
# SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
from __future__ import annotations
|
|
6
7
|
|
|
7
|
-
from typing import Any
|
|
8
|
+
from typing import Any
|
|
8
9
|
|
|
9
10
|
from onnx.reference.op_run import OpRun, _split_class_name
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
def build_registered_operators_any_domain(
|
|
13
|
-
module_context:
|
|
14
|
-
) ->
|
|
15
|
-
reg_ops:
|
|
14
|
+
module_context: dict[str, Any],
|
|
15
|
+
) -> dict[str, dict[int | None, OpRun]]:
|
|
16
|
+
reg_ops: dict[str, dict[int | None, OpRun]] = {}
|
|
16
17
|
for class_name, class_type in module_context.items():
|
|
17
18
|
if class_name.startswith("_") or class_name in {
|
|
18
19
|
"Any",
|
|
@@ -20,6 +21,7 @@ def build_registered_operators_any_domain(
|
|
|
20
21
|
"List",
|
|
21
22
|
"TOptional",
|
|
22
23
|
"Union",
|
|
24
|
+
"annotations",
|
|
23
25
|
"cl",
|
|
24
26
|
"class_name",
|
|
25
27
|
"get_schema",
|