onnx 1.16.1__cp311-cp311-win_amd64.whl → 1.17.0__cp311-cp311-win_amd64.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 +13 -11
- 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 +996 -9
- 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 +114 -3
- onnx/external_data_helper.py +27 -14
- onnx/gen_proto.py +3 -2
- onnx/helper.py +86 -61
- onnx/hub.py +39 -35
- 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.cp311-win_amd64.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 +7 -6
- onnx/tools/replace_constants.py +11 -11
- onnx/tools/update_model_dims.py +7 -6
- onnx/utils.py +104 -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.1.dist-info → onnx-1.17.0.dist-info}/METADATA +8 -11
- {onnx-1.16.1.dist-info → onnx-1.17.0.dist-info}/RECORD +843 -817
- {onnx-1.16.1.dist-info → onnx-1.17.0.dist-info}/WHEEL +1 -1
- {onnx-1.16.1.dist-info → onnx-1.17.0.dist-info}/LICENSE +0 -0
- {onnx-1.16.1.dist-info → onnx-1.17.0.dist-info}/entry_points.txt +0 -0
- {onnx-1.16.1.dist-info → onnx-1.17.0.dist-info}/top_level.txt +0 -0
onnx/hub.py
CHANGED
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
This implements the python client for the ONNX model hub.
|
|
7
7
|
"""
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
8
10
|
import hashlib
|
|
9
11
|
import json
|
|
10
12
|
import os
|
|
11
13
|
import sys
|
|
12
|
-
import tarfile
|
|
13
14
|
from io import BytesIO
|
|
14
15
|
from os.path import join
|
|
15
|
-
from typing import IO, Any, Dict, List,
|
|
16
|
+
from typing import IO, Any, Dict, List, cast
|
|
16
17
|
from urllib.error import HTTPError
|
|
17
18
|
from urllib.request import urlopen
|
|
18
19
|
|
|
@@ -39,7 +40,7 @@ class ModelInfo:
|
|
|
39
40
|
opset: The opset version of the model.
|
|
40
41
|
"""
|
|
41
42
|
|
|
42
|
-
def __init__(self, raw_model_info:
|
|
43
|
+
def __init__(self, raw_model_info: dict[str, Any]) -> None:
|
|
43
44
|
"""Initializer.
|
|
44
45
|
|
|
45
46
|
Args:
|
|
@@ -48,17 +49,17 @@ class ModelInfo:
|
|
|
48
49
|
self.model = cast(str, raw_model_info["model"])
|
|
49
50
|
|
|
50
51
|
self.model_path = cast(str, raw_model_info["model_path"])
|
|
51
|
-
self.metadata:
|
|
52
|
-
self.model_sha:
|
|
52
|
+
self.metadata: dict[str, Any] = cast(Dict[str, Any], raw_model_info["metadata"])
|
|
53
|
+
self.model_sha: str | None = None
|
|
53
54
|
if "model_sha" in self.metadata:
|
|
54
55
|
self.model_sha = cast(str, self.metadata["model_sha"])
|
|
55
56
|
|
|
56
|
-
self.tags:
|
|
57
|
+
self.tags: set[str] = set()
|
|
57
58
|
if "tags" in self.metadata:
|
|
58
59
|
self.tags = set(cast(List[str], self.metadata["tags"]))
|
|
59
60
|
|
|
60
61
|
self.opset = cast(int, raw_model_info["opset_version"])
|
|
61
|
-
self.raw_model_info:
|
|
62
|
+
self.raw_model_info: dict[str, Any] = raw_model_info
|
|
62
63
|
|
|
63
64
|
def __str__(self) -> str:
|
|
64
65
|
return f"ModelInfo(model={self.model}, opset={self.opset}, path={self.model_path}, metadata={self.metadata})"
|
|
@@ -86,7 +87,7 @@ def get_dir() -> str:
|
|
|
86
87
|
return _ONNX_HUB_DIR
|
|
87
88
|
|
|
88
89
|
|
|
89
|
-
def _parse_repo_info(repo: str) ->
|
|
90
|
+
def _parse_repo_info(repo: str) -> tuple[str, str, str]:
|
|
90
91
|
"""Gets the repo owner, name and ref from a repo specification string."""
|
|
91
92
|
repo_owner = repo.split(":")[0].split("/")[0]
|
|
92
93
|
repo_name = repo.split(":")[0].split("/")[1]
|
|
@@ -143,9 +144,9 @@ def _download_file(url: str, file_name: str) -> None:
|
|
|
143
144
|
|
|
144
145
|
def list_models(
|
|
145
146
|
repo: str = "onnx/models:main",
|
|
146
|
-
model:
|
|
147
|
-
tags:
|
|
148
|
-
) ->
|
|
147
|
+
model: str | None = None,
|
|
148
|
+
tags: list[str] | None = None,
|
|
149
|
+
) -> list[ModelInfo]:
|
|
149
150
|
"""Gets the list of model info consistent with a given name and tags
|
|
150
151
|
|
|
151
152
|
Args:
|
|
@@ -164,7 +165,7 @@ def list_models(
|
|
|
164
165
|
manifest_url = base_url + "ONNX_HUB_MANIFEST.json"
|
|
165
166
|
try:
|
|
166
167
|
with urlopen(manifest_url) as response:
|
|
167
|
-
manifest:
|
|
168
|
+
manifest: list[ModelInfo] = [
|
|
168
169
|
ModelInfo(info) for info in json.load(cast(IO[str], response))
|
|
169
170
|
]
|
|
170
171
|
except HTTPError as e:
|
|
@@ -182,7 +183,7 @@ def list_models(
|
|
|
182
183
|
return matching_models
|
|
183
184
|
|
|
184
185
|
canonical_tags = {t.lower() for t in tags}
|
|
185
|
-
matching_info_list:
|
|
186
|
+
matching_info_list: list[ModelInfo] = []
|
|
186
187
|
for m in matching_models:
|
|
187
188
|
model_tags = {t.lower() for t in m.tags}
|
|
188
189
|
if len(canonical_tags.intersection(model_tags)) > 0:
|
|
@@ -191,7 +192,7 @@ def list_models(
|
|
|
191
192
|
|
|
192
193
|
|
|
193
194
|
def get_model_info(
|
|
194
|
-
model: str, repo: str = "onnx/models:main", opset:
|
|
195
|
+
model: str, repo: str = "onnx/models:main", opset: int | None = None
|
|
195
196
|
) -> ModelInfo:
|
|
196
197
|
"""Gets the model info matching the given name and opset.
|
|
197
198
|
|
|
@@ -226,10 +227,10 @@ def get_model_info(
|
|
|
226
227
|
def load(
|
|
227
228
|
model: str,
|
|
228
229
|
repo: str = "onnx/models:main",
|
|
229
|
-
opset:
|
|
230
|
+
opset: int | None = None,
|
|
230
231
|
force_reload: bool = False,
|
|
231
232
|
silent: bool = False,
|
|
232
|
-
) ->
|
|
233
|
+
) -> onnx.ModelProto | None:
|
|
233
234
|
"""Downloads a model by name from the onnx model hub.
|
|
234
235
|
|
|
235
236
|
Args:
|
|
@@ -251,9 +252,9 @@ def load(
|
|
|
251
252
|
selected_model = get_model_info(model, repo, opset)
|
|
252
253
|
local_model_path_arr = selected_model.model_path.split("/")
|
|
253
254
|
if selected_model.model_sha is not None:
|
|
254
|
-
local_model_path_arr[
|
|
255
|
-
-1
|
|
256
|
-
|
|
255
|
+
local_model_path_arr[-1] = (
|
|
256
|
+
f"{selected_model.model_sha}_{local_model_path_arr[-1]}"
|
|
257
|
+
)
|
|
257
258
|
local_model_path = join(_ONNX_HUB_DIR, os.sep.join(local_model_path_arr))
|
|
258
259
|
|
|
259
260
|
if force_reload or not os.path.exists(local_model_path):
|
|
@@ -291,11 +292,12 @@ def load(
|
|
|
291
292
|
def download_model_with_test_data(
|
|
292
293
|
model: str,
|
|
293
294
|
repo: str = "onnx/models:main",
|
|
294
|
-
opset:
|
|
295
|
+
opset: int | None = None,
|
|
295
296
|
force_reload: bool = False,
|
|
296
297
|
silent: bool = False,
|
|
297
|
-
) ->
|
|
298
|
+
) -> str | None:
|
|
298
299
|
"""Downloads a model along with test data by name from the onnx model hub and returns the directory to which the files have been extracted.
|
|
300
|
+
Users are responsible for making sure the model comes from a trusted source, and the data is safe to be extracted.
|
|
299
301
|
|
|
300
302
|
Args:
|
|
301
303
|
model: The name of the onnx model in the manifest. This field is
|
|
@@ -322,9 +324,9 @@ def download_model_with_test_data(
|
|
|
322
324
|
model_with_data_sha = selected_model.metadata["model_with_data_sha"]
|
|
323
325
|
|
|
324
326
|
if model_with_data_sha is not None:
|
|
325
|
-
local_model_with_data_path_arr[
|
|
326
|
-
-1
|
|
327
|
-
|
|
327
|
+
local_model_with_data_path_arr[-1] = (
|
|
328
|
+
f"{model_with_data_sha}_{local_model_with_data_path_arr[-1]}"
|
|
329
|
+
)
|
|
328
330
|
local_model_with_data_path = join(
|
|
329
331
|
_ONNX_HUB_DIR, os.sep.join(local_model_with_data_path_arr)
|
|
330
332
|
)
|
|
@@ -361,12 +363,14 @@ def download_model_with_test_data(
|
|
|
361
363
|
"download the model from the model hub."
|
|
362
364
|
)
|
|
363
365
|
|
|
364
|
-
with
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
366
|
+
# FIXME: Avoid index manipulation with magic numbers,
|
|
367
|
+
# remove ".tar.gz"
|
|
368
|
+
local_model_with_data_dir_path = local_model_with_data_path[
|
|
369
|
+
0 : len(local_model_with_data_path) - 7
|
|
370
|
+
]
|
|
371
|
+
onnx.utils._extract_model_safe(
|
|
372
|
+
local_model_with_data_path, local_model_with_data_dir_path
|
|
373
|
+
)
|
|
370
374
|
model_with_data_path = (
|
|
371
375
|
local_model_with_data_dir_path
|
|
372
376
|
+ "/"
|
|
@@ -381,10 +385,10 @@ def load_composite_model(
|
|
|
381
385
|
preprocessing_model: str,
|
|
382
386
|
network_repo: str = "onnx/models:main",
|
|
383
387
|
preprocessing_repo: str = "onnx/models:main",
|
|
384
|
-
opset:
|
|
388
|
+
opset: int | None = None,
|
|
385
389
|
force_reload: bool = False,
|
|
386
390
|
silent: bool = False,
|
|
387
|
-
) ->
|
|
391
|
+
) -> onnx.ModelProto | None:
|
|
388
392
|
"""Builds a composite model including data preprocessing by downloading a network and a preprocessing model
|
|
389
393
|
and combine it into a single model
|
|
390
394
|
|
|
@@ -418,9 +422,9 @@ def load_composite_model(
|
|
|
418
422
|
if network is None:
|
|
419
423
|
raise RuntimeError(f"Could not load the network model: {network_model}")
|
|
420
424
|
|
|
421
|
-
all_domains:
|
|
422
|
-
domains_to_version_network:
|
|
423
|
-
domains_to_version_preprocessing:
|
|
425
|
+
all_domains: set[str] = set()
|
|
426
|
+
domains_to_version_network: dict[str, int] = {}
|
|
427
|
+
domains_to_version_preprocessing: dict[str, int] = {}
|
|
424
428
|
|
|
425
429
|
for opset_import_entry in network.opset_import:
|
|
426
430
|
domain = (
|
onnx/inliner/inliner.cc
CHANGED
|
@@ -66,7 +66,6 @@ struct OpsetMap : public OpsetMapBase {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
bool Add(const google::protobuf::RepeatedPtrField<OperatorSetIdProto>& list) {
|
|
69
|
-
OpsetMapBase result;
|
|
70
69
|
for (const auto& pair : list) {
|
|
71
70
|
auto domain = NormalizeDomain(pair.domain());
|
|
72
71
|
auto version = pair.version();
|
onnx/mapping.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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 warnings
|
|
6
7
|
from typing import Any, Dict, NamedTuple, Union, cast
|
|
@@ -93,7 +94,7 @@ TENSOR_TYPE_MAP = {
|
|
|
93
94
|
class DeprecatedWarningDict(dict): # type: ignore
|
|
94
95
|
def __init__(
|
|
95
96
|
self,
|
|
96
|
-
dictionary:
|
|
97
|
+
dictionary: dict[int, int | str | np.dtype],
|
|
97
98
|
original_function: str,
|
|
98
99
|
future_function: str = "",
|
|
99
100
|
) -> None:
|
|
@@ -109,7 +110,7 @@ class DeprecatedWarningDict(dict): # type: ignore
|
|
|
109
110
|
and self._future_function == other._future_function
|
|
110
111
|
)
|
|
111
112
|
|
|
112
|
-
def __getitem__(self, key:
|
|
113
|
+
def __getitem__(self, key: int | str | np.dtype) -> Any:
|
|
113
114
|
if not self._future_function:
|
|
114
115
|
warnings.warn(
|
|
115
116
|
str(
|
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):
|