onnx 1.15.0__cp311-cp311-win_amd64.whl → 1.16.1__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 +10 -10
- onnx/backend/base.py +13 -14
- onnx/backend/sample/ops/abs.py +1 -1
- onnx/backend/test/case/model/__init__.py +0 -1
- onnx/backend/test/case/node/ai_onnx_ml/tree_ensemble.py +122 -0
- onnx/backend/test/case/node/averagepool.py +15 -30
- onnx/backend/test/case/node/cast.py +88 -11
- onnx/backend/test/case/node/dequantizelinear.py +155 -0
- onnx/backend/test/case/node/groupnormalization.py +13 -9
- onnx/backend/test/case/node/gru.py +2 -2
- onnx/backend/test/case/node/isinf.py +4 -4
- onnx/backend/test/case/node/isnan.py +2 -2
- onnx/backend/test/case/node/lppool.py +8 -16
- onnx/backend/test/case/node/lstm.py +1 -1
- onnx/backend/test/case/node/maxpool.py +40 -34
- onnx/backend/test/case/node/pow.py +1 -1
- onnx/backend/test/case/node/qlinearmatmul.py +143 -109
- onnx/backend/test/case/node/quantizelinear.py +298 -7
- onnx/backend/test/case/node/reducemax.py +26 -0
- onnx/backend/test/case/node/rnn.py +1 -1
- onnx/backend/test/case/node/scan.py +6 -2
- onnx/backend/test/case/node/scatterelements.py +1 -1
- onnx/backend/test/case/node/topk.py +1 -1
- onnx/backend/test/case/utils.py +1 -3
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/model.onnx +0 -0
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/model.onnx +0 -0
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_BFLOAT16_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_DOUBLE/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_BFLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_DOUBLE/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_STRING/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_INT8/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_STRING_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT/model.onnx +0 -0
- onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_constant/model.onnx +0 -0
- onnx/backend/test/data/node/test_constant_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_constant_pad_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_constant_pad_negative_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_constantofshape_float_ones/model.onnx +0 -0
- onnx/backend/test/data/node/test_constantofshape_int_shape_zero/model.onnx +0 -0
- onnx/backend/test/data/node/test_constantofshape_int_zeros/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_axis/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_blocked/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_e4m3fn/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_float16/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_zero_point/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_e5m2/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int16/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint16/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint4/model.onnx +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_edge_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_axis0/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_axis1/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_axis2/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_axis3/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_default_axis/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_negative_axis1/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_negative_axis2/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_negative_axis3/model.onnx +0 -0
- onnx/backend/test/data/node/test_flatten_negative_axis4/model.onnx +0 -0
- onnx/backend/test/data/node/test_group_normalization_epsilon/model.onnx +0 -0
- onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_0.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_1.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_2.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_group_normalization_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_1.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_2.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_group_normalization_example_expanded/model.onnx +0 -0
- onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_1.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_2.pb +1 -1
- onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_identity/model.onnx +0 -0
- onnx/backend/test/data/node/test_identity_sequence/model.onnx +0 -0
- onnx/backend/test/data/node/test_lrn_default/test_data_set_0/output_0.pb +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_ceil_output_size_reduce_by_one/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_mvn/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_mvn_expanded/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_mvn_expanded_ver18/test_data_set_0/output_0.pb +1 -1
- onnx/backend/test/data/node/test_pow/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_1.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_4.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_6.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_1.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_4.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_6.pb +2 -0
- onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float32}/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_1.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_4.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_6.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_1.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_4.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_6.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_1.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_4.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_6.pb +2 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float32}/model.onnx +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_1.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_3.pb +0 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_4.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_5.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_6.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_7.pb +1 -0
- onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_axis/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e4m3fn/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e5m2/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int16/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_2.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/output_0.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear_uint16/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint4/model.onnx +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_0.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
- onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
- onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
- onnx/backend/test/data/node/test_reflect_pad/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_allowzero_reordered/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_extended_dims/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_negative_dim/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_negative_extended_dims/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_one_dim/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_reduced_dims/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_reordered_all_dims/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_reordered_last_dims/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_zero_and_negative_dim/model.onnx +0 -0
- onnx/backend/test/data/node/test_reshape_zero_dim/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_clip_end/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_clip_start/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_end_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_end_negative_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_start_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_start_1_end_2/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_start_1_end_negative_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_shape_start_negative_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_size/model.onnx +0 -0
- onnx/backend/test/data/node/test_size_example/model.onnx +0 -0
- onnx/backend/test/data/node/test_squeeze/model.onnx +0 -0
- onnx/backend/test/data/node/test_squeeze_negative_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_0/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_2/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_3/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_4/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_all_permutations_5/model.onnx +0 -0
- onnx/backend/test/data/node/test_transpose_default/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_axis_0/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_axis_1/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_axis_2/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_negative_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_three_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_two_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_unsqueeze_unsorted_axes/model.onnx +0 -0
- onnx/backend/test/data/node/test_wrap_pad/model.onnx +0 -0
- onnx/backend/test/loader/__init__.py +0 -1
- onnx/backend/test/runner/__init__.py +43 -15
- onnx/checker.cc +104 -99
- onnx/checker.h +23 -3
- onnx/checker.py +56 -20
- onnx/common/assertions.cc +10 -5
- onnx/common/common.h +19 -0
- onnx/common/file_utils.h +3 -1
- onnx/common/interned_strings.h +7 -1
- onnx/common/ir.h +30 -7
- onnx/common/ir_pb_converter.cc +6 -0
- onnx/common/path.h +18 -2
- onnx/common/proto_util.h +43 -0
- onnx/common/version.h +1 -1
- onnx/cpp2py_export.cc +88 -56
- onnx/defs/__init__.py +29 -8
- onnx/defs/controlflow/defs.cc +16 -16
- onnx/defs/controlflow/old.cc +177 -0
- onnx/defs/data_propagators.h +2 -0
- onnx/defs/data_type_utils.cc +2 -0
- onnx/defs/generator/defs.cc +6 -4
- onnx/defs/generator/old.cc +115 -0
- onnx/defs/math/defs.cc +37 -142
- onnx/defs/math/old.cc +96 -12
- onnx/defs/math/utils.cc +127 -0
- onnx/defs/math/utils.h +8 -0
- onnx/defs/nn/defs.cc +72 -59
- onnx/defs/nn/old.cc +181 -2
- onnx/defs/object_detection/defs.cc +2 -2
- onnx/defs/object_detection/old.cc +2 -2
- onnx/defs/operator_sets.h +51 -0
- onnx/defs/operator_sets_ml.h +14 -0
- onnx/defs/parser.cc +112 -54
- onnx/defs/parser.h +14 -2
- onnx/defs/printer.cc +14 -7
- onnx/defs/quantization/defs.cc +111 -44
- onnx/defs/quantization/old.cc +130 -1
- onnx/defs/schema.cc +62 -18
- onnx/defs/schema.h +194 -48
- onnx/defs/shape_inference.cc +28 -19
- onnx/defs/shape_inference.h +2 -0
- onnx/defs/tensor/defs.cc +54 -96
- onnx/defs/tensor/old.cc +939 -34
- onnx/defs/tensor/utils.cc +6 -3
- onnx/defs/tensor/utils.h +5 -1
- onnx/defs/tensor_proto_util.cc +2 -0
- onnx/defs/tensor_util.cc +2 -0
- onnx/defs/traditionalml/defs.cc +273 -117
- onnx/defs/traditionalml/old.cc +329 -14
- onnx/defs/traditionalml/utils.h +27 -0
- onnx/external_data_helper.py +12 -26
- onnx/helper.py +242 -169
- onnx/hub.py +104 -70
- onnx/inliner/inliner.cc +89 -31
- onnx/inliner/inliner.h +5 -0
- onnx/inliner.py +2 -0
- onnx/mapping.py +9 -0
- onnx/model_container.py +346 -0
- onnx/numpy_helper.py +100 -38
- onnx/onnx-ml.proto +50 -13
- onnx/onnx.in.proto +50 -13
- onnx/onnx.proto +50 -13
- onnx/onnx_cpp2py_export/__init__.pyi +5 -0
- onnx/onnx_cpp2py_export/checker.pyi +21 -0
- onnx/onnx_cpp2py_export/defs.pyi +202 -0
- onnx/onnx_cpp2py_export/inliner.pyi +19 -0
- onnx/onnx_cpp2py_export/parser.pyi +32 -0
- onnx/onnx_cpp2py_export/printer.pyi +3 -0
- onnx/onnx_cpp2py_export/shape_inference.pyi +16 -0
- onnx/onnx_cpp2py_export/version_converter.pyi +4 -0
- onnx/onnx_cpp2py_export.cp311-win_amd64.pyd +0 -0
- onnx/onnx_data_pb2.pyi +146 -0
- onnx/onnx_ml_pb2.py +52 -52
- onnx/onnx_ml_pb2.pyi +663 -0
- onnx/onnx_operators_ml_pb2.pyi +67 -0
- onnx/reference/__init__.py +2 -0
- onnx/reference/custom_element_types.py +2 -0
- onnx/reference/op_run.py +166 -121
- onnx/reference/ops/_op.py +27 -50
- onnx/reference/ops/_op_list.py +36 -24
- onnx/reference/ops/aionnx_preview_training/_op_list.py +15 -8
- onnx/reference/ops/aionnxml/_common_classifier.py +3 -5
- onnx/reference/ops/aionnxml/_op_list.py +16 -8
- onnx/reference/ops/aionnxml/op_array_feature_extractor.py +4 -6
- onnx/reference/ops/aionnxml/op_linear_classifier.py +1 -2
- onnx/reference/ops/aionnxml/op_normalizer.py +3 -3
- onnx/reference/ops/aionnxml/op_svm_helper.py +1 -3
- onnx/reference/ops/aionnxml/op_svm_regressor.py +1 -3
- onnx/reference/ops/aionnxml/op_tree_ensemble.py +257 -0
- onnx/reference/ops/aionnxml/op_tree_ensemble_helper.py +2 -6
- onnx/reference/ops/aionnxml/op_tree_ensemble_regressor.py +4 -4
- onnx/reference/ops/experimental/_op_list.py +15 -8
- onnx/reference/ops/op_blackman_window.py +5 -6
- onnx/reference/ops/op_cast.py +22 -0
- onnx/reference/ops/op_cast_like.py +6 -0
- onnx/reference/ops/op_clip.py +5 -8
- onnx/reference/ops/op_col2im.py +1 -3
- onnx/reference/ops/op_constant.py +7 -1
- onnx/reference/ops/op_dequantize_linear.py +43 -40
- onnx/reference/ops/op_det.py +1 -1
- onnx/reference/ops/op_dynamic_quantize_linear.py +2 -2
- onnx/reference/ops/op_grid_sample.py +2 -4
- onnx/reference/ops/op_hamming_window.py +3 -6
- onnx/reference/ops/op_hann_window.py +3 -6
- onnx/reference/ops/op_if.py +4 -3
- onnx/reference/ops/op_loop.py +7 -9
- onnx/reference/ops/op_matmul.py +1 -2
- onnx/reference/ops/op_max_pool.py +5 -0
- onnx/reference/ops/op_optional.py +1 -1
- onnx/reference/ops/op_pool_common.py +3 -6
- onnx/reference/ops/op_qlinear_matmul.py +2 -2
- onnx/reference/ops/op_quantize_linear.py +166 -71
- onnx/reference/ops/op_resize.py +25 -21
- onnx/reference/ops/op_rnn.py +20 -12
- onnx/reference/ops/op_scan.py +23 -15
- onnx/reference/ops/op_scatter_elements.py +7 -6
- onnx/reference/ops/op_stft.py +3 -5
- onnx/reference/ops/op_string_normalizer.py +7 -7
- onnx/reference/ops/op_tfidf_vectorizer.py +7 -8
- onnx/reference/ops/op_topk.py +9 -11
- onnx/reference/ops/op_unique.py +1 -1
- onnx/reference/reference_evaluator.py +119 -63
- onnx/shape_inference/implementation.cc +160 -127
- onnx/shape_inference.py +11 -10
- onnx/subbyte.py +72 -0
- onnx/test/__init__.pyi +6 -0
- onnx/test/checker_test.py +21 -1
- onnx/test/compose_test.py +26 -74
- onnx/test/cpp/inliner_test.cc +76 -1
- onnx/test/cpp/ir_test.cc +60 -0
- onnx/test/cpp/parser_test.cc +106 -0
- onnx/test/function_test.py +1 -3
- onnx/test/helper_test.py +64 -4
- onnx/test/model_container_refeval_test.py +139 -0
- onnx/test/model_container_test.py +136 -0
- onnx/test/model_inference_test.py +44 -0
- onnx/test/reference_evaluator_ml_test.py +448 -47
- onnx/test/reference_evaluator_model_test.py +130 -0
- onnx/test/reference_evaluator_test.py +901 -14
- onnx/test/schema_test.py +166 -1
- onnx/test/shape_inference_test.py +285 -6
- onnx/test/symbolic_shape_test.py +3 -8
- onnx/test/test_backend_onnxruntime.py +238 -224
- onnx/test/test_backend_reference.py +11 -0
- onnx/test/test_external_data.py +51 -2
- onnx/test/version_converter/automatic_conversion_test_base.py +2 -1
- onnx/test/version_converter/automatic_upgrade_test.py +12 -10
- onnx/test/version_converter_test.py +166 -0
- onnx/tools/replace_constants.py +23 -26
- onnx/tools/update_model_dims.py +1 -2
- onnx/version.py +2 -2
- onnx/version_converter/adapters/group_normalization_20_21.h +128 -0
- onnx/version_converter/adapters/q_dq_21_20.h +77 -0
- onnx/version_converter/convert.h +67 -2
- onnx/version_converter.py +6 -142
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/METADATA +18 -15
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/RECORD +572 -406
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/WHEEL +1 -1
- onnx/examples/Protobufs.ipynb +0 -639
- onnx/examples/check_model.ipynb +0 -128
- onnx/examples/load_model.ipynb +0 -116
- onnx/examples/make_model.ipynb +0 -176
- onnx/examples/np_array_tensorproto.ipynb +0 -136
- onnx/examples/resources/single_relu.onnx +0 -12
- onnx/examples/resources/single_relu_new.onnx +0 -12
- onnx/examples/resources/tensor.pb +0 -0
- onnx/examples/resources/two_transposes.onnx +0 -0
- onnx/examples/save_model.ipynb +0 -56
- onnx/examples/shape_inference.ipynb +0 -111
- onnx/test/reference_evaluator_backend_test.py +0 -876
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_1.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_4.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_6.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_2.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_5.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_7.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_1.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_2.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_4.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_5.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_6.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_7.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
- /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/LICENSE +0 -0
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/entry_points.txt +0 -0
- {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/top_level.txt +0 -0
|
@@ -69,6 +69,7 @@ std::string GetElemTypeString(const TypeProto_SparseTensor& type) {
|
|
|
69
69
|
inline bool IsOnnxDomainOp(const NodeProto& node, const std::string& op_type) {
|
|
70
70
|
return (IsOnnxDomain(node.domain()) && (node.op_type() == op_type));
|
|
71
71
|
}
|
|
72
|
+
|
|
72
73
|
} // namespace
|
|
73
74
|
|
|
74
75
|
template <class T>
|
|
@@ -249,13 +250,100 @@ void MaterializeSymbolicShape(TypeProto* inferred_type, SymbolTable& symbol_tabl
|
|
|
249
250
|
}
|
|
250
251
|
}
|
|
251
252
|
|
|
252
|
-
std::string
|
|
253
|
-
|
|
253
|
+
std::string GetFunctionIdentifier(const FunctionProto& function) {
|
|
254
|
+
// Note: Models with IR version < 10 do not have the overload attribute.
|
|
255
|
+
// However, that will be mapped to an empty identifier.
|
|
256
|
+
std::string overload = function.overload();
|
|
257
|
+
if (overload.empty()) {
|
|
258
|
+
return function.domain() + ":" + function.name();
|
|
259
|
+
}
|
|
260
|
+
return function.domain() + ":" + function.name() + ":" + overload;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
std::string GetFunctionIdentifier(const NodeProto& node) {
|
|
264
|
+
// Note: Models with IR version < 10 do not have the overload attribute.
|
|
265
|
+
// However, that will be mapped to an empty identifier.
|
|
266
|
+
std::string overload = node.overload();
|
|
267
|
+
if (overload.empty()) {
|
|
268
|
+
return node.domain() + ":" + node.op_type();
|
|
269
|
+
}
|
|
270
|
+
return node.domain() + ":" + node.op_type() + ":" + overload;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// InferredTypes: abstracts the differences between FunctionProto and GraphProto
|
|
274
|
+
// for inference. For GraphProto, inferred types are stored in the GraphProto
|
|
275
|
+
// but FunctionProto does not have a place to store inferred types. So, we
|
|
276
|
+
// use a temporary vector (for the duration of inference) to store these.
|
|
277
|
+
class InferredTypes {
|
|
278
|
+
public:
|
|
279
|
+
explicit InferredTypes(GraphProto* graph = nullptr) : graph_ptr(graph) {}
|
|
280
|
+
|
|
281
|
+
TypeProto* Add(const std::string& var_name, const TypeProto& type) {
|
|
282
|
+
if (graph_ptr != nullptr) {
|
|
283
|
+
auto* p = graph_ptr->add_value_info();
|
|
284
|
+
p->set_name(var_name);
|
|
285
|
+
*p->mutable_type() = type;
|
|
286
|
+
return p->mutable_type();
|
|
287
|
+
} else {
|
|
288
|
+
auto* p = new TypeProto(type);
|
|
289
|
+
types.push_back(p);
|
|
290
|
+
return p;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
~InferredTypes() {
|
|
295
|
+
for (auto* p : types) {
|
|
296
|
+
delete p;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
private:
|
|
301
|
+
std::vector<TypeProto*> types;
|
|
302
|
+
GraphProto* graph_ptr;
|
|
303
|
+
ONNX_DISALLOW_COPY_ASSIGNMENT_AND_MOVE(InferredTypes);
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
// Initialize a DataValueMap for a called function from the DataValueMap of the caller
|
|
307
|
+
void BindValuesOnCall(
|
|
308
|
+
const DataValueMap& caller_map,
|
|
309
|
+
const NodeProto& caller,
|
|
310
|
+
DataValueMap& callee_map,
|
|
311
|
+
const FunctionProto& callee) {
|
|
312
|
+
auto num_inputs = (std::min)(caller.input_size(), callee.input_size());
|
|
313
|
+
for (int i = 0; i < num_inputs; ++i) {
|
|
314
|
+
const std::string& actual = caller.input(i);
|
|
315
|
+
const std::string& formal = callee.input(i);
|
|
316
|
+
if (!actual.empty()) {
|
|
317
|
+
auto it = caller_map.find(actual);
|
|
318
|
+
if (it != caller_map.end()) {
|
|
319
|
+
callee_map[formal] = it->second;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Update a DataValueMap for a calling function from the DataValueMap of the callee
|
|
326
|
+
void BindValuesOnReturn(
|
|
327
|
+
const DataValueMap& callee_map,
|
|
328
|
+
const FunctionProto& callee,
|
|
329
|
+
DataValueMap& caller_map,
|
|
330
|
+
const NodeProto& caller) {
|
|
331
|
+
auto num_outputs = (std::min)(caller.output_size(), callee.output_size());
|
|
332
|
+
for (int i = 0; i < num_outputs; ++i) {
|
|
333
|
+
const std::string& actual = caller.output(i);
|
|
334
|
+
const std::string& formal = callee.output(i);
|
|
335
|
+
if (!actual.empty()) {
|
|
336
|
+
auto it = callee_map.find(formal);
|
|
337
|
+
if (it != callee_map.end()) {
|
|
338
|
+
caller_map[actual] = it->second;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
254
342
|
}
|
|
255
343
|
|
|
256
344
|
class ShapeInferenceImplBase {
|
|
257
345
|
public:
|
|
258
|
-
void
|
|
346
|
+
void UpdateType(const std::string& name, TypeProto* inferred_type) {
|
|
259
347
|
if (inferred_type->value_case() == TypeProto::ValueCase::VALUE_NOT_SET) {
|
|
260
348
|
return;
|
|
261
349
|
}
|
|
@@ -268,14 +356,10 @@ class ShapeInferenceImplBase {
|
|
|
268
356
|
// then check for compatibility with the inferred
|
|
269
357
|
// information. Otherwise, initialize it in an empty state.
|
|
270
358
|
auto iter = value_types_by_name.find(name);
|
|
271
|
-
TypeProto* existing_type = nullptr;
|
|
272
359
|
if (iter != value_types_by_name.end()) {
|
|
273
|
-
|
|
360
|
+
mergeShapesAndTypes(*inferred_type, iter->second);
|
|
274
361
|
} else {
|
|
275
|
-
|
|
276
|
-
auto vi = g.add_value_info(); // TODO: clean this up
|
|
277
|
-
vi->set_name(name);
|
|
278
|
-
existing_type = vi->mutable_type();
|
|
362
|
+
value_types_by_name[name] = inferred_types.Add(name, *inferred_type);
|
|
279
363
|
// For undefined output type, update both value_info and output for now
|
|
280
364
|
// Update existing output with undefined type: assign inferred type to it
|
|
281
365
|
iter = undefined_value_types_by_name.find(name);
|
|
@@ -283,16 +367,9 @@ class ShapeInferenceImplBase {
|
|
|
283
367
|
*iter->second = *inferred_type;
|
|
284
368
|
}
|
|
285
369
|
}
|
|
286
|
-
|
|
287
|
-
// TODO: cleanup this by merging with previous if-else
|
|
288
|
-
// Now we can merge pre-existing and inferred info
|
|
289
|
-
mergeShapesAndTypes(*inferred_type, existing_type);
|
|
290
|
-
|
|
291
|
-
// Make merged info available to further inference.
|
|
292
|
-
value_types_by_name[name] = existing_type;
|
|
293
370
|
}
|
|
294
371
|
|
|
295
|
-
void
|
|
372
|
+
void UpdateType(ValueInfoProto& valueInfo) {
|
|
296
373
|
if (valueInfo.has_type()) {
|
|
297
374
|
value_types_by_name[valueInfo.name()] = valueInfo.mutable_type();
|
|
298
375
|
} else {
|
|
@@ -301,15 +378,13 @@ class ShapeInferenceImplBase {
|
|
|
301
378
|
}
|
|
302
379
|
|
|
303
380
|
template <typename T>
|
|
304
|
-
void
|
|
381
|
+
void AddTemporaryConstant(const std::string& name, const T& vector) {
|
|
305
382
|
input_data_by_name_holder[name] = ToTensor(vector);
|
|
306
383
|
input_data_by_name[name] = &input_data_by_name_holder[name];
|
|
307
384
|
}
|
|
308
385
|
|
|
309
|
-
void
|
|
310
|
-
if (
|
|
311
|
-
has_experimental_op = true;
|
|
312
|
-
} else if (IsOnnxDomainOp(n, "Constant") && n.output().size() == 1) {
|
|
386
|
+
void ProcessConstant(const NodeProto& n) {
|
|
387
|
+
if (IsOnnxDomainOp(n, "Constant") && n.output().size() == 1) {
|
|
313
388
|
const std::string& output_name = n.output(0);
|
|
314
389
|
for (const auto& attr : n.attribute()) {
|
|
315
390
|
if (attr.name() == "value") {
|
|
@@ -329,22 +404,22 @@ class ShapeInferenceImplBase {
|
|
|
329
404
|
switch (attr.type()) {
|
|
330
405
|
case AttributeProto::INTS: {
|
|
331
406
|
std::vector<int64_t> ints{attr.ints().begin(), attr.ints().end()};
|
|
332
|
-
|
|
407
|
+
AddTemporaryConstant(output_name, ints);
|
|
333
408
|
break;
|
|
334
409
|
}
|
|
335
410
|
case AttributeProto::INT: {
|
|
336
411
|
std::vector<int64_t> ints({attr.i()});
|
|
337
|
-
|
|
412
|
+
AddTemporaryConstant(output_name, ints);
|
|
338
413
|
break;
|
|
339
414
|
}
|
|
340
415
|
case AttributeProto::FLOATS: {
|
|
341
416
|
std::vector<float> floats{attr.floats().begin(), attr.floats().end()};
|
|
342
|
-
|
|
417
|
+
AddTemporaryConstant(output_name, floats);
|
|
343
418
|
break;
|
|
344
419
|
}
|
|
345
420
|
case AttributeProto::FLOAT: {
|
|
346
421
|
std::vector<float> floats({attr.f()});
|
|
347
|
-
|
|
422
|
+
AddTemporaryConstant(output_name, floats);
|
|
348
423
|
break;
|
|
349
424
|
}
|
|
350
425
|
default:
|
|
@@ -355,57 +430,19 @@ class ShapeInferenceImplBase {
|
|
|
355
430
|
}
|
|
356
431
|
}
|
|
357
432
|
|
|
358
|
-
|
|
359
|
-
void bindValuesOnCall(
|
|
360
|
-
const DataValueMap& caller_map,
|
|
361
|
-
const NodeProto& caller,
|
|
362
|
-
DataValueMap& callee_map,
|
|
363
|
-
const FunctionProto& callee) {
|
|
364
|
-
auto num_inputs = (std::min)(caller.input_size(), callee.input_size());
|
|
365
|
-
for (int i = 0; i < num_inputs; ++i) {
|
|
366
|
-
const std::string& actual = caller.input(i);
|
|
367
|
-
const std::string& formal = callee.input(i);
|
|
368
|
-
if (!actual.empty()) {
|
|
369
|
-
auto it = caller_map.find(actual);
|
|
370
|
-
if (it != caller_map.end()) {
|
|
371
|
-
callee_map[formal] = it->second;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
// Update a DataValueMap for a calling function from the DataValueMap of the callee
|
|
378
|
-
void bindValuesOnReturn(
|
|
379
|
-
const DataValueMap& callee_map,
|
|
380
|
-
const FunctionProto& callee,
|
|
381
|
-
DataValueMap& caller_map,
|
|
382
|
-
const NodeProto& caller) {
|
|
383
|
-
auto num_outputs = (std::min)(caller.output_size(), callee.output_size());
|
|
384
|
-
for (int i = 0; i < num_outputs; ++i) {
|
|
385
|
-
const std::string& actual = caller.output(i);
|
|
386
|
-
const std::string& formal = callee.output(i);
|
|
387
|
-
if (!actual.empty()) {
|
|
388
|
-
auto it = callee_map.find(formal);
|
|
389
|
-
if (it != callee_map.end()) {
|
|
390
|
-
caller_map[actual] = it->second;
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
void processCall(const NodeProto& caller, const FunctionProto& callee, InferenceContext& ctx) {
|
|
433
|
+
void ProcessCall(const NodeProto& caller, const FunctionProto& callee, InferenceContext& ctx) {
|
|
397
434
|
DataValueMap callee_value_map;
|
|
398
435
|
if (generated_shape_data_by_name != nullptr) {
|
|
399
|
-
|
|
436
|
+
BindValuesOnCall(*generated_shape_data_by_name, caller, callee_value_map, callee);
|
|
400
437
|
}
|
|
401
438
|
InferShapeForFunctionNode(
|
|
402
439
|
callee, schema_registry, ctx, options, model_local_functions_map, symbol_table, &callee_value_map);
|
|
403
440
|
if (generated_shape_data_by_name != nullptr) {
|
|
404
|
-
|
|
441
|
+
BindValuesOnReturn(callee_value_map, callee, *generated_shape_data_by_name, caller);
|
|
405
442
|
}
|
|
406
443
|
}
|
|
407
444
|
|
|
408
|
-
void
|
|
445
|
+
void Process(NodeProto& n) {
|
|
409
446
|
// Resolve domain for node
|
|
410
447
|
auto dit = opset_imports.find(n.domain());
|
|
411
448
|
if (dit == opset_imports.end()) {
|
|
@@ -439,15 +476,16 @@ class ShapeInferenceImplBase {
|
|
|
439
476
|
if (schema->has_type_and_shape_inference_function()) {
|
|
440
477
|
schema->GetTypeAndShapeInferenceFunction()(ctx);
|
|
441
478
|
} else if (schema->HasFunction()) {
|
|
442
|
-
|
|
443
|
-
} else
|
|
444
|
-
|
|
445
|
-
|
|
479
|
+
ProcessCall(n, *(schema->GetFunction()), ctx);
|
|
480
|
+
} // else: rely on schema->CheckInputOutputType() down below.
|
|
481
|
+
// check type-constraints specified via type variables
|
|
482
|
+
if (options.check_type) {
|
|
483
|
+
schema->CheckInputOutputType(ctx);
|
|
446
484
|
}
|
|
447
485
|
} else if (model_local_functions_map.size() > 0) {
|
|
448
|
-
auto iter = model_local_functions_map.find(
|
|
486
|
+
auto iter = model_local_functions_map.find(GetFunctionIdentifier(n));
|
|
449
487
|
if (iter != model_local_functions_map.end()) {
|
|
450
|
-
|
|
488
|
+
ProcessCall(n, *(iter->second), ctx);
|
|
451
489
|
} else {
|
|
452
490
|
has_unsupported_op = true;
|
|
453
491
|
return;
|
|
@@ -456,34 +494,15 @@ class ShapeInferenceImplBase {
|
|
|
456
494
|
has_unsupported_op = true;
|
|
457
495
|
return;
|
|
458
496
|
}
|
|
459
|
-
}
|
|
460
|
-
ONNX_CATCH(const ONNX_NAMESPACE::InferenceError& ex) {
|
|
461
|
-
ONNX_HANDLE_EXCEPTION([&]() {
|
|
462
|
-
// onnx does not support unsupported/experimental operators
|
|
463
|
-
// so it won't consider it as an error
|
|
464
|
-
if (!has_unsupported_op && !has_experimental_op) {
|
|
465
|
-
inference_errors.push_back(GetErrorWithNodeInfo(n, ex));
|
|
466
|
-
}
|
|
467
|
-
});
|
|
468
|
-
// Continue with inference for remaining nodes
|
|
469
|
-
return;
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
ONNX_TRY {
|
|
473
|
-
// check the type-equality for input and output
|
|
474
|
-
if (options.check_type && schema) {
|
|
475
|
-
schema->CheckInputOutputType(ctx);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
497
|
for (int i = 0; i < n.output_size(); ++i) {
|
|
479
498
|
// skip type and shape propagation for missing optional outputs.
|
|
480
499
|
if (!n.output(i).empty())
|
|
481
|
-
|
|
500
|
+
UpdateType(n.output(i), ctx.getOutputType(i));
|
|
482
501
|
}
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
//
|
|
502
|
+
// Constant values are tracked to improve inference/checking for subsequent nodes.
|
|
503
|
+
ProcessConstant(n);
|
|
504
|
+
// If data-propagation is enabled, partial-evaluation (aka data-propagation) is performed
|
|
505
|
+
// to improve inference/checking for subsequent nodes.
|
|
487
506
|
if (options.enable_data_propagation && schema && schema->has_data_propagation_function()) {
|
|
488
507
|
if (generated_shape_data_by_name == nullptr) {
|
|
489
508
|
fail_shape_inference(
|
|
@@ -494,14 +513,32 @@ class ShapeInferenceImplBase {
|
|
|
494
513
|
schema->GetDataPropagationFunction()(data_propagation_ctx);
|
|
495
514
|
}
|
|
496
515
|
}
|
|
516
|
+
ONNX_CATCH(const ONNX_NAMESPACE::InferenceError& ex) {
|
|
517
|
+
ONNX_HANDLE_EXCEPTION([&]() {
|
|
518
|
+
// Note: The following special handling is to accommodate custom-ops. Ideally, custom-ops
|
|
519
|
+
// should be registered with a schema in the schema registry, allowing inference to handle
|
|
520
|
+
// them. As things stand, this special handling is somewhat fragile and is not fully
|
|
521
|
+
// general either. Eg., a custom-op suppresses error-messages for subsequent nodes, but
|
|
522
|
+
// this does not work across graphs. If special handling is required, a user-option may
|
|
523
|
+
// be a better way to do it. The fragility comes from the fact that the types of the
|
|
524
|
+
// returned-values of the custom-op are unknown, and subsequent node-level inference
|
|
525
|
+
// may fail because of this.
|
|
526
|
+
if (!has_unsupported_op) {
|
|
527
|
+
inference_errors.push_back(GetErrorWithNodeInfo(n, ex));
|
|
528
|
+
}
|
|
529
|
+
});
|
|
530
|
+
}
|
|
497
531
|
ONNX_CATCH(const std::runtime_error& err) {
|
|
532
|
+
// TODO: Fix this. Unclear if this should be remapped to a shape inference error.
|
|
533
|
+
// Need to rationalize the different types of exceptions that can be thrown.
|
|
534
|
+
// See: https://github.com/onnx/onnx/pull/5519
|
|
498
535
|
ONNX_HANDLE_EXCEPTION([&]() { fail_shape_inference(GetErrorWithNodeInfo(n, err)); });
|
|
499
536
|
}
|
|
500
537
|
}
|
|
501
538
|
|
|
502
539
|
// TypeProto_Tensor or TypeProto_SparseTensor
|
|
503
540
|
template <typename T>
|
|
504
|
-
void
|
|
541
|
+
void ProcessInitializer(
|
|
505
542
|
const std::string& name,
|
|
506
543
|
const T& tensorValue,
|
|
507
544
|
TypeProto& initializer_type,
|
|
@@ -523,18 +560,18 @@ class ShapeInferenceImplBase {
|
|
|
523
560
|
}
|
|
524
561
|
}
|
|
525
562
|
|
|
526
|
-
void
|
|
563
|
+
void Process(GraphProto& graph) {
|
|
527
564
|
if (symbol_table) {
|
|
528
565
|
TraverseGraphsToAddExistingSymbols(graph, *symbol_table);
|
|
529
566
|
}
|
|
530
567
|
for (auto& vi : *graph.mutable_value_info()) {
|
|
531
|
-
|
|
568
|
+
UpdateType(vi);
|
|
532
569
|
}
|
|
533
570
|
for (auto& vi : *graph.mutable_input()) {
|
|
534
|
-
|
|
571
|
+
UpdateType(vi);
|
|
535
572
|
}
|
|
536
573
|
for (auto& vi : *graph.mutable_output()) {
|
|
537
|
-
|
|
574
|
+
UpdateType(vi);
|
|
538
575
|
}
|
|
539
576
|
for (const auto& tp : graph.initializer()) {
|
|
540
577
|
TypeProto initializer_type;
|
|
@@ -545,7 +582,7 @@ class ShapeInferenceImplBase {
|
|
|
545
582
|
for (int i = 0; i < tp.dims_size(); ++i) {
|
|
546
583
|
shape->add_dim()->set_dim_value(tp.dims(i));
|
|
547
584
|
}
|
|
548
|
-
|
|
585
|
+
ProcessInitializer(tp.name(), tp, initializer_type, input_data_by_name);
|
|
549
586
|
}
|
|
550
587
|
for (const auto& tp : graph.sparse_initializer()) {
|
|
551
588
|
TypeProto initializer_type;
|
|
@@ -556,20 +593,20 @@ class ShapeInferenceImplBase {
|
|
|
556
593
|
for (int i = 0; i < tp.dims_size(); ++i) {
|
|
557
594
|
shape->add_dim()->set_dim_value(tp.dims(i));
|
|
558
595
|
}
|
|
559
|
-
|
|
596
|
+
ProcessInitializer(tp.values().name(), tp, initializer_type, input_sparse_data_by_name);
|
|
560
597
|
}
|
|
561
598
|
for (auto& n : *graph.mutable_node()) {
|
|
562
|
-
|
|
599
|
+
Process(n);
|
|
563
600
|
}
|
|
564
601
|
}
|
|
565
602
|
|
|
566
|
-
void
|
|
603
|
+
void Process(const NodeProto& n, internal::AttributeBinder& attribute_binder) {
|
|
567
604
|
NodeProto copy_n(n);
|
|
568
605
|
attribute_binder.VisitNode(©_n);
|
|
569
|
-
|
|
606
|
+
Process(copy_n);
|
|
570
607
|
}
|
|
571
608
|
|
|
572
|
-
void
|
|
609
|
+
void Process(const FunctionProto& func_proto, InferenceContext& ctx) {
|
|
573
610
|
// Ensure Constant node tensor-attributes are copied
|
|
574
611
|
bool old_reuse_constant_tensors = reuse_constant_tensors;
|
|
575
612
|
reuse_constant_tensors = false;
|
|
@@ -618,7 +655,7 @@ class ShapeInferenceImplBase {
|
|
|
618
655
|
|
|
619
656
|
internal::AttributeBinder attribute_binder(attr_map);
|
|
620
657
|
for (auto& n : func_proto.node()) {
|
|
621
|
-
|
|
658
|
+
Process(n, attribute_binder);
|
|
622
659
|
}
|
|
623
660
|
|
|
624
661
|
for (int i = 0; i < func_proto.output_size(); ++i) {
|
|
@@ -638,7 +675,7 @@ class ShapeInferenceImplBase {
|
|
|
638
675
|
|
|
639
676
|
public:
|
|
640
677
|
ShapeInferenceImplBase(
|
|
641
|
-
GraphProto*
|
|
678
|
+
GraphProto* graph, // nullptr for FunctionProto inference
|
|
642
679
|
const std::unordered_map<std::string, TypeProto*>& outer_scope_value_types_by_name_in,
|
|
643
680
|
const std::unordered_map<std::string, int>& opset_imports_in,
|
|
644
681
|
const ShapeInferenceOptions& options_in,
|
|
@@ -648,7 +685,7 @@ class ShapeInferenceImplBase {
|
|
|
648
685
|
DataValueMap* generated_shape_data_by_name_in = nullptr,
|
|
649
686
|
const int ir_version_in = IR_VERSION // default the latest one
|
|
650
687
|
)
|
|
651
|
-
:
|
|
688
|
+
: inferred_types(graph),
|
|
652
689
|
value_types_by_name(outer_scope_value_types_by_name_in),
|
|
653
690
|
opset_imports(opset_imports_in),
|
|
654
691
|
options(options_in),
|
|
@@ -671,7 +708,7 @@ class ShapeInferenceImplBase {
|
|
|
671
708
|
}
|
|
672
709
|
}
|
|
673
710
|
|
|
674
|
-
void
|
|
711
|
+
void FinalizeShapeInference() {
|
|
675
712
|
auto& errors = getErrors();
|
|
676
713
|
// Throw shape inference error if any. Error mode right now only supports 0 and 1.
|
|
677
714
|
// When set to 0, any node level shape inference errors are not thrown. This is to support backward compatiblity
|
|
@@ -691,7 +728,7 @@ class ShapeInferenceImplBase {
|
|
|
691
728
|
}
|
|
692
729
|
|
|
693
730
|
private:
|
|
694
|
-
|
|
731
|
+
InferredTypes inferred_types;
|
|
695
732
|
std::unordered_map<std::string, TypeProto*> value_types_by_name;
|
|
696
733
|
const std::unordered_map<std::string, int>& opset_imports;
|
|
697
734
|
|
|
@@ -708,7 +745,6 @@ class ShapeInferenceImplBase {
|
|
|
708
745
|
std::unordered_map<std::string, TensorProto> input_data_by_name_holder;
|
|
709
746
|
std::unordered_map<std::string, const SparseTensorProto*> input_sparse_data_by_name;
|
|
710
747
|
|
|
711
|
-
bool has_experimental_op = false;
|
|
712
748
|
bool has_unsupported_op = false;
|
|
713
749
|
|
|
714
750
|
std::vector<std::string> inference_errors;
|
|
@@ -745,8 +781,8 @@ static void InferShapesImpl(
|
|
|
745
781
|
schema_registry,
|
|
746
782
|
generated_shape_data_by_name,
|
|
747
783
|
ir_version);
|
|
748
|
-
base.
|
|
749
|
-
base.
|
|
784
|
+
base.Process(*g);
|
|
785
|
+
base.FinalizeShapeInference();
|
|
750
786
|
}
|
|
751
787
|
|
|
752
788
|
// Either ModelProto or FunctionProto
|
|
@@ -785,8 +821,7 @@ void InferShapes(
|
|
|
785
821
|
SymbolTableImpl symbol_table;
|
|
786
822
|
ModelLocalFunctionsMap model_local_functions_by_id;
|
|
787
823
|
for (const auto& function_proto : m.functions()) {
|
|
788
|
-
model_local_functions_by_id.insert(
|
|
789
|
-
{GetModelLocalFunctionsMapIdentifier(function_proto.domain(), function_proto.name()), &function_proto});
|
|
824
|
+
model_local_functions_by_id.insert({GetFunctionIdentifier(function_proto), &function_proto});
|
|
790
825
|
}
|
|
791
826
|
InferShapesImpl(
|
|
792
827
|
m.mutable_graph(),
|
|
@@ -832,9 +867,8 @@ void InferShapeForFunctionNode(
|
|
|
832
867
|
const std::unordered_map<std::string, const FunctionProto*>& model_local_functions_map,
|
|
833
868
|
SymbolTable* symbol_table,
|
|
834
869
|
DataValueMap* generated_shape_data_by_name) {
|
|
835
|
-
GraphProto g;
|
|
836
870
|
ShapeInferenceImplBase base(
|
|
837
|
-
|
|
871
|
+
nullptr, // no graph
|
|
838
872
|
{}, // outer_scope_value_types_by_name
|
|
839
873
|
func_opset_imports,
|
|
840
874
|
options,
|
|
@@ -842,8 +876,8 @@ void InferShapeForFunctionNode(
|
|
|
842
876
|
model_local_functions_map,
|
|
843
877
|
schema_registry,
|
|
844
878
|
generated_shape_data_by_name);
|
|
845
|
-
base.
|
|
846
|
-
base.
|
|
879
|
+
base.Process(func_proto, ctx);
|
|
880
|
+
base.FinalizeShapeInference();
|
|
847
881
|
}
|
|
848
882
|
|
|
849
883
|
void InferShapeForFunctionNode(
|
|
@@ -953,9 +987,8 @@ std::vector<TypeProto> InferFunctionOutputTypes(
|
|
|
953
987
|
ShapeInferenceOptions options{true, 1, false};
|
|
954
988
|
FunctionInferenceContext ctx(function_proto, input_types, attributes, options);
|
|
955
989
|
auto opset_imports = GetOpsetImportsFromProto(function_proto);
|
|
956
|
-
GraphProto g;
|
|
957
990
|
ShapeInferenceImplBase base(
|
|
958
|
-
|
|
991
|
+
nullptr, // no graph
|
|
959
992
|
{}, // outer_scope_value_types_by_name
|
|
960
993
|
opset_imports,
|
|
961
994
|
options,
|
|
@@ -963,8 +996,8 @@ std::vector<TypeProto> InferFunctionOutputTypes(
|
|
|
963
996
|
/*model_local_functions_map*/ {},
|
|
964
997
|
/*schema_registry*/ OpSchemaRegistry::Instance(),
|
|
965
998
|
/*generated_shape_data_by_name*/ nullptr);
|
|
966
|
-
base.
|
|
967
|
-
base.
|
|
999
|
+
base.Process(function_proto, ctx);
|
|
1000
|
+
base.FinalizeShapeInference();
|
|
968
1001
|
return ctx.popOutputTypes();
|
|
969
1002
|
}
|
|
970
1003
|
|
onnx/shape_inference.py
CHANGED
|
@@ -32,11 +32,11 @@ def infer_shapes(
|
|
|
32
32
|
bug in shape inference), and the result is unspecified.
|
|
33
33
|
|
|
34
34
|
Arguments:
|
|
35
|
-
model
|
|
36
|
-
check_type
|
|
37
|
-
strict_mode
|
|
38
|
-
Otherwise, simply stop if any error
|
|
39
|
-
data_prop
|
|
35
|
+
model: ModelProto.
|
|
36
|
+
check_type: Checks the type-equality for input and output.
|
|
37
|
+
strict_mode: Stricter shape inference, it will throw errors if any;
|
|
38
|
+
Otherwise, simply stop if any error.
|
|
39
|
+
data_prop: Enables data propagation for limited operators to perform shape computation.
|
|
40
40
|
|
|
41
41
|
Returns:
|
|
42
42
|
(ModelProto) model with inferred shape information
|
|
@@ -65,9 +65,11 @@ def infer_shapes_path(
|
|
|
65
65
|
strict_mode: bool = False,
|
|
66
66
|
data_prop: bool = False,
|
|
67
67
|
) -> None:
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
"""Take model path for shape_inference.
|
|
69
|
+
|
|
70
|
+
This function is the same as :func:`infer_shape` but supports >2GB models.
|
|
71
|
+
The function outputs the inferred model to the `output_path`. The original model path
|
|
72
|
+
is used if not specified.
|
|
71
73
|
"""
|
|
72
74
|
if isinstance(model_path, ModelProto):
|
|
73
75
|
raise TypeError(
|
|
@@ -149,8 +151,7 @@ def infer_function_output_types(
|
|
|
149
151
|
input_types: Sequence[TypeProto],
|
|
150
152
|
attributes: Sequence[AttributeProto],
|
|
151
153
|
) -> list[TypeProto]:
|
|
152
|
-
"""
|
|
153
|
-
Apply type-and-shape-inference to given function body, with given input types
|
|
154
|
+
"""Apply type-and-shape-inference to given function body, with given input types
|
|
154
155
|
and given input attribute values.
|
|
155
156
|
"""
|
|
156
157
|
result = C.infer_function_output_types(
|
onnx/subbyte.py
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Copyright (c) ONNX Project Contributors
|
|
2
|
+
#
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
|
|
5
|
+
from typing import Tuple, Union
|
|
6
|
+
|
|
7
|
+
import numpy as np
|
|
8
|
+
|
|
9
|
+
INT4_MIN = -8
|
|
10
|
+
INT4_MAX = 7
|
|
11
|
+
UINT4_MIN = 0
|
|
12
|
+
UINT4_MAX = 15
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def float32_to_4bit_unpacked(
|
|
16
|
+
x: Union[np.ndarray, np.dtype, float], signed: bool
|
|
17
|
+
) -> np.ndarray:
|
|
18
|
+
"""Cast to 4bit via rounding and clipping (without packing).
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
x: element to be converted
|
|
22
|
+
signed: boolean, whether to convert to signed int4.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
An ndarray with a single int4 element (sign-extended to int8/uint8)
|
|
26
|
+
"""
|
|
27
|
+
dtype = np.int8 if signed else np.uint8
|
|
28
|
+
clip_low = INT4_MIN if signed else UINT4_MIN
|
|
29
|
+
clip_high = INT4_MAX if signed else UINT4_MAX
|
|
30
|
+
if not isinstance(x, np.ndarray):
|
|
31
|
+
x = np.asarray(x)
|
|
32
|
+
|
|
33
|
+
return np.rint(np.clip(x, clip_low, clip_high)).astype(dtype) # type: ignore[no-any-return]
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def float32x2_to_4bitx2(
|
|
37
|
+
val_low: np.dtype, val_high: np.dtype, signed: bool
|
|
38
|
+
) -> np.ndarray:
|
|
39
|
+
"""Cast two elements to 4bit (via rounding and clipping) and pack
|
|
40
|
+
to a single byte
|
|
41
|
+
Args:
|
|
42
|
+
val_low: element to be packed in the 4 LSB
|
|
43
|
+
val_high: element to be packed in the 4 MSB
|
|
44
|
+
signed: boolean, whether to convert to signed int4.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
An ndarray with a single int8/uint8 element, containing both int4 elements
|
|
48
|
+
"""
|
|
49
|
+
i8_high = float32_to_4bit_unpacked(val_high, signed)
|
|
50
|
+
i8_low = float32_to_4bit_unpacked(val_low, signed)
|
|
51
|
+
return i8_high << 4 | i8_low & 0x0F # type: ignore[operator]
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def unpack_single_4bitx2(
|
|
55
|
+
x: Union[np.ndarray, np.dtype, float], signed: bool
|
|
56
|
+
) -> Tuple[np.ndarray, np.ndarray]:
|
|
57
|
+
unpack_signed = lambda x: np.where((x >> 3) == 0, x, x | 0xF0) # noqa: E731
|
|
58
|
+
"""Unpack a single byte 4bitx2 to two 4 bit elements
|
|
59
|
+
Args:
|
|
60
|
+
x: Input data
|
|
61
|
+
signed: boolean, whether to interpret as signed int4.
|
|
62
|
+
Returns:
|
|
63
|
+
A tuple of ndarrays containing int4 elements (sign-extended to int8/uint8)
|
|
64
|
+
"""
|
|
65
|
+
if not isinstance(x, np.ndarray):
|
|
66
|
+
x = np.asarray(x)
|
|
67
|
+
x_low = x & 0x0F
|
|
68
|
+
x_high = x >> 4
|
|
69
|
+
x_low = unpack_signed(x_low) if signed else x_low
|
|
70
|
+
x_high = unpack_signed(x_high) if signed else x_high
|
|
71
|
+
dtype = np.int8 if signed else np.uint8
|
|
72
|
+
return (x_low.astype(dtype), x_high.astype(dtype))
|
onnx/test/__init__.pyi
ADDED
onnx/test/checker_test.py
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Copyright (c) ONNX Project Contributors
|
|
2
2
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import os
|
|
5
|
+
import tempfile
|
|
4
6
|
import unittest
|
|
5
7
|
from typing import Sequence
|
|
6
8
|
|
|
@@ -98,8 +100,10 @@ class TestChecker(unittest.TestCase):
|
|
|
98
100
|
ctx.ir_version = 3
|
|
99
101
|
ctx.opset_imports = {"": onnx.defs.onnx_opset_version()}
|
|
100
102
|
|
|
103
|
+
lex_ctx = checker.C.LexicalScopeContext()
|
|
104
|
+
|
|
101
105
|
def check_ir_version_3(g: GraphProto) -> None:
|
|
102
|
-
checker.check_graph(g, ctx)
|
|
106
|
+
checker.check_graph(g, ctx, lex_ctx)
|
|
103
107
|
|
|
104
108
|
node = helper.make_node("Relu", ["X"], ["Y"], name="test")
|
|
105
109
|
graph = helper.make_graph(
|
|
@@ -1056,6 +1060,22 @@ class TestChecker(unittest.TestCase):
|
|
|
1056
1060
|
# Should not throw an error
|
|
1057
1061
|
checker.check_model(model, full_check=True)
|
|
1058
1062
|
|
|
1063
|
+
def test_check_model_supports_unicode_path(self):
|
|
1064
|
+
input_tensor = helper.make_tensor_value_info(
|
|
1065
|
+
"input", onnx.TensorProto.FLOAT, [1]
|
|
1066
|
+
)
|
|
1067
|
+
output_tensor = helper.make_tensor_value_info(
|
|
1068
|
+
"output", onnx.TensorProto.FLOAT, [1]
|
|
1069
|
+
)
|
|
1070
|
+
node = helper.make_node("Identity", ["input"], ["output"])
|
|
1071
|
+
graph = helper.make_graph([node], "test", [input_tensor], [output_tensor])
|
|
1072
|
+
model = helper.make_model(graph, producer_name="test")
|
|
1073
|
+
|
|
1074
|
+
with tempfile.TemporaryDirectory() as temp_dir:
|
|
1075
|
+
unicode_model_path = os.path.join(temp_dir, "模型モデル모델✨.onnx")
|
|
1076
|
+
onnx.save(model, unicode_model_path)
|
|
1077
|
+
checker.check_model(unicode_model_path, full_check=True)
|
|
1078
|
+
|
|
1059
1079
|
|
|
1060
1080
|
if __name__ == "__main__":
|
|
1061
1081
|
unittest.main()
|