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
|
@@ -9,12 +9,9 @@ from onnx.reference.ops._op_common_window import _CommonWindow
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class HannWindow(_CommonWindow):
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
where *N* is the window length.
|
|
16
|
-
See `hann_window
|
|
17
|
-
<https://pytorch.org/docs/stable/generated/torch.hann_window.html>`_
|
|
12
|
+
r"""Returns :math:`\\omega_n = \\sin^2\\left( \\frac{\\pi n}{N-1} \\right)` where *N* is the window length.
|
|
13
|
+
|
|
14
|
+
See `hann_window <https://pytorch.org/docs/stable/generated/torch.hann_window.html>`_
|
|
18
15
|
"""
|
|
19
16
|
|
|
20
17
|
def _run(self, size, output_datatype=None, periodic=None): # type: ignore
|
onnx/reference/ops/op_if.py
CHANGED
|
@@ -16,10 +16,11 @@ class If(OpRun):
|
|
|
16
16
|
raise KeyError("run_params must contains key 'opsets'.")
|
|
17
17
|
if "verbose" not in run_params:
|
|
18
18
|
raise KeyError("run_params must contains key 'verbose'.")
|
|
19
|
+
if "existing_functions" not in self.run_params:
|
|
20
|
+
raise KeyError("run_params must contains key 'existing_functions'.")
|
|
19
21
|
|
|
20
22
|
def need_context(self) -> bool:
|
|
21
|
-
"""
|
|
22
|
-
Tells the runtime if this node needs the context
|
|
23
|
+
"""Tells the runtime if this node needs the context
|
|
23
24
|
(all the results produced so far) as it may silently access
|
|
24
25
|
one of them (operator Loop).
|
|
25
26
|
The default answer is `False`.
|
|
@@ -65,4 +66,4 @@ class If(OpRun):
|
|
|
65
66
|
f"Output {i!r} (branch={branch!r}, name={names[i]!r}) is None, "
|
|
66
67
|
f"available inputs={sorted(context)}, initializers={inits}."
|
|
67
68
|
)
|
|
68
|
-
return final
|
|
69
|
+
return self._check_and_fix_outputs(final)
|
onnx/reference/ops/op_loop.py
CHANGED
|
@@ -20,8 +20,7 @@ class Loop(OpRun):
|
|
|
20
20
|
self.K = len(self.body.output_names) - self.N - 1 # type: ignore
|
|
21
21
|
|
|
22
22
|
def need_context(self) -> bool:
|
|
23
|
-
"""
|
|
24
|
-
The operator Loop needs to know all results produced
|
|
23
|
+
"""The operator Loop needs to know all results produced
|
|
25
24
|
so far as the loop may silently access one of them.
|
|
26
25
|
Some information are not always referred in the list of inputs
|
|
27
26
|
(kind of static variables).
|
|
@@ -34,8 +33,8 @@ class Loop(OpRun):
|
|
|
34
33
|
args = args[1:]
|
|
35
34
|
else:
|
|
36
35
|
v_initial = None
|
|
37
|
-
if not hasattr(M, "dtype"):
|
|
38
|
-
raise TypeError(f"M must be an array
|
|
36
|
+
if M is not None and not hasattr(M, "dtype"):
|
|
37
|
+
raise TypeError(f"M must be empty or an array but its type is {type(M)}.")
|
|
39
38
|
body = self.body # type: ignore
|
|
40
39
|
loop_inputs = body.input_names
|
|
41
40
|
inputs = {name: None for name in loop_inputs}
|
|
@@ -53,10 +52,10 @@ class Loop(OpRun):
|
|
|
53
52
|
|
|
54
53
|
k_carried_away = [[] for i in range(self.K)] # type: ignore
|
|
55
54
|
it = 0
|
|
56
|
-
while cond and it < M:
|
|
55
|
+
while cond and (M is None or it < M):
|
|
57
56
|
self._log(" -- loop> {%r}", context)
|
|
58
57
|
if len(body.input_names) > 0 and body.input_names[0] is not None:
|
|
59
|
-
inputs[body.input_names[0]] = np.array(it, dtype=M.dtype) # type: ignore
|
|
58
|
+
inputs[body.input_names[0]] = np.array(it, dtype=None if M is None else M.dtype) # type: ignore
|
|
60
59
|
if len(body.input_names) > 1 and body.input_names[1] is not None:
|
|
61
60
|
inputs[body.input_names[1]] = cond
|
|
62
61
|
outputs = self._run_body(inputs, attributes=attributes) # type: ignore
|
|
@@ -78,9 +77,8 @@ class Loop(OpRun):
|
|
|
78
77
|
outputs = [inputs[i] for i in body.input_names[2:]]
|
|
79
78
|
else:
|
|
80
79
|
outputs = outputs[1 : 1 + self.N]
|
|
81
|
-
outputs.extend(k_carried_away)
|
|
80
|
+
outputs.extend([np.vstack(x) for x in k_carried_away])
|
|
82
81
|
while len(outputs) < len(self.onnx_node.output):
|
|
83
82
|
outputs.append(np.empty(shape=()))
|
|
84
83
|
res = tuple(outputs)
|
|
85
|
-
|
|
86
|
-
return res
|
|
84
|
+
return self._check_and_fix_outputs(res)
|
onnx/reference/ops/op_matmul.py
CHANGED
|
@@ -87,6 +87,11 @@ class MaxPool(CommonPool):
|
|
|
87
87
|
+ 1
|
|
88
88
|
)
|
|
89
89
|
)
|
|
90
|
+
need_to_reduce_out_size_in_ceil_mode = (
|
|
91
|
+
output_spatial_shape[i] - 1
|
|
92
|
+
) * strides[i] >= input_spatial_shape[i] + new_pads[i][0]
|
|
93
|
+
if need_to_reduce_out_size_in_ceil_mode:
|
|
94
|
+
output_spatial_shape[i] -= 1
|
|
90
95
|
else:
|
|
91
96
|
for i in range(len(input_spatial_shape)):
|
|
92
97
|
output_spatial_shape[i] = int(
|
|
@@ -8,7 +8,7 @@ from onnx.reference.op_run import OpRun
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Optional(OpRun):
|
|
11
|
-
def _run(self, x=None, type=None): # type: ignore
|
|
11
|
+
def _run(self, x=None, type=None): # type: ignore # noqa: A002
|
|
12
12
|
if x is not None and type is not None:
|
|
13
13
|
dt = tensor_dtype_to_np_dtype(type)
|
|
14
14
|
if dt != x.dtype:
|
|
@@ -57,8 +57,7 @@ def get_output_shape_explicit_padding(
|
|
|
57
57
|
dilations: Union[Sequence[int], None] = None,
|
|
58
58
|
ceil_mode: bool = False,
|
|
59
59
|
) -> Tuple[Sequence[int], Sequence[int]]:
|
|
60
|
-
"""
|
|
61
|
-
compute output shape according to:
|
|
60
|
+
"""Compute output shape according to:
|
|
62
61
|
https://pytorch.org/docs/stable/generated/torch.nn.MaxPool1d.html?highlight=max+pool#torch.nn.MaxPool1d
|
|
63
62
|
Pads are used to calculate output shape. Use output shape in turn to calculate the actual pads
|
|
64
63
|
that are used to pad the input tensor so that computation in pool() will not cause out of bound error.
|
|
@@ -121,8 +120,7 @@ def get_output_shape_auto_pad(
|
|
|
121
120
|
kernel_spatial_shape: Sequence[int],
|
|
122
121
|
strides_spatial: Sequence[int],
|
|
123
122
|
) -> Sequence[int]:
|
|
124
|
-
"""
|
|
125
|
-
https://www.tensorflow.org/api_docs/python/tf/keras/layers/AveragePooling2D
|
|
123
|
+
"""https://www.tensorflow.org/api_docs/python/tf/keras/layers/AveragePooling2D
|
|
126
124
|
output_shape = math.floor((input_shape - 1) / strides) + 1 (SAME)
|
|
127
125
|
output_shape = math.floor((input_shape - pool_size) / strides) + 1 (VALID)
|
|
128
126
|
IMPORTANT: this function assumes ceil_mode is False. In tenforflow, ceil_mode is always False.
|
|
@@ -172,8 +170,7 @@ def pool(
|
|
|
172
170
|
count_include_pad: int = 0,
|
|
173
171
|
p: int = 1,
|
|
174
172
|
) -> np.ndarray:
|
|
175
|
-
"""
|
|
176
|
-
this function is used to calculate the pooling result of a padded tensor
|
|
173
|
+
"""This function is used to calculate the pooling result of a padded tensor
|
|
177
174
|
padded: the padded tensor
|
|
178
175
|
x_shape: the shape of the original tensor in [N, C, *spatial_shape]
|
|
179
176
|
kernel: the pooling kernel
|
|
@@ -22,5 +22,5 @@ class QLinearMatMul(OpRun):
|
|
|
22
22
|
D = C * (a_scale * b_scale / y_scale)
|
|
23
23
|
if y_zero_point is not None:
|
|
24
24
|
D += y_zero_point
|
|
25
|
-
return (np.
|
|
26
|
-
return (np.
|
|
25
|
+
return (np.rint(D).astype(y_zero_point.dtype),)
|
|
26
|
+
return (np.rint(D).astype(a.dtype),)
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from typing import ClassVar
|
|
7
9
|
|
|
8
10
|
import numpy as np
|
|
9
11
|
|
|
10
|
-
from onnx import TensorProto
|
|
12
|
+
from onnx import TensorProto, subbyte
|
|
11
13
|
from onnx.helper import (
|
|
12
14
|
float32_to_float8e4m3,
|
|
13
15
|
float32_to_float8e5m2,
|
|
@@ -19,111 +21,204 @@ from onnx.reference.custom_element_types import (
|
|
|
19
21
|
float8e4m3fnuz,
|
|
20
22
|
float8e5m2,
|
|
21
23
|
float8e5m2fnuz,
|
|
24
|
+
int4,
|
|
25
|
+
uint4,
|
|
22
26
|
)
|
|
23
27
|
from onnx.reference.op_run import OpRun
|
|
24
28
|
|
|
25
29
|
|
|
30
|
+
def reshape_input(
|
|
31
|
+
value: np.ndarray,
|
|
32
|
+
shape: tuple[int, ...],
|
|
33
|
+
axis: int | None = None,
|
|
34
|
+
block_size: int | None = None,
|
|
35
|
+
) -> np.ndarray:
|
|
36
|
+
"""Reshape/Replicate scale/zero-point to be broadcastable to shape.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
value: the array to be reshaped/replicated
|
|
40
|
+
shape: the rarget shape
|
|
41
|
+
axis: quantization axis, applicable for per-axis and blocked quantization
|
|
42
|
+
block_size: size of quantization block, applicable only for blocked quantization
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
value array after reshape/replicate according to quantization mode.
|
|
46
|
+
"""
|
|
47
|
+
if len(value.shape) == 0:
|
|
48
|
+
return value
|
|
49
|
+
if len(value.shape) > 0 and value.size == 1:
|
|
50
|
+
return value[0]
|
|
51
|
+
if not block_size:
|
|
52
|
+
assert len(value.shape) == 1
|
|
53
|
+
dims = [1] * len(shape)
|
|
54
|
+
try:
|
|
55
|
+
dims[axis] = value.size
|
|
56
|
+
return value.reshape(tuple(dims))
|
|
57
|
+
except IndexError as e:
|
|
58
|
+
raise IndexError(
|
|
59
|
+
f"axis is out of boundary, axis={axis}, "
|
|
60
|
+
f"value.shape={value.shape}, shape={shape}."
|
|
61
|
+
) from e
|
|
62
|
+
|
|
63
|
+
if block_size <= 0:
|
|
64
|
+
raise ValueError("block_size must be a positive integer.")
|
|
65
|
+
|
|
66
|
+
# repeat scale to get elementwise scale
|
|
67
|
+
value = np.repeat(value, repeats=block_size, axis=axis)
|
|
68
|
+
if (
|
|
69
|
+
shape[axis] != value.shape[axis]
|
|
70
|
+
): # block_size does not divide x, handle the remainder block
|
|
71
|
+
value = value.take(indices=range(0, shape[axis]), axis=axis)
|
|
72
|
+
if value.shape != shape:
|
|
73
|
+
raise ValueError(
|
|
74
|
+
"Invalid shapes for Blocked Quantization. Input 2 shape should identical to Input 1 shape, except for one dimension, in which blocking is performed"
|
|
75
|
+
)
|
|
76
|
+
assert np.broadcast_shapes(shape, value.shape) == shape
|
|
77
|
+
return value
|
|
78
|
+
|
|
79
|
+
|
|
26
80
|
class _CommonQuantizeLinear(OpRun):
|
|
27
81
|
float32_to_float8e4m3 = np.vectorize(float32_to_float8e4m3)
|
|
28
82
|
float32_to_float8e5m2 = np.vectorize(float32_to_float8e5m2)
|
|
83
|
+
quant_integer_ranges: ClassVar[dict[TensorProto.DataType, tuple[int]]] = {
|
|
84
|
+
TensorProto.UINT8: (0, 255),
|
|
85
|
+
TensorProto.INT8: (-128, 127),
|
|
86
|
+
TensorProto.UINT16: (0, 65535),
|
|
87
|
+
TensorProto.INT16: (-32768, 32767),
|
|
88
|
+
}
|
|
89
|
+
quant_types = (
|
|
90
|
+
TensorProto.UINT8,
|
|
91
|
+
TensorProto.INT8,
|
|
92
|
+
TensorProto.UINT16,
|
|
93
|
+
TensorProto.INT16,
|
|
94
|
+
TensorProto.UINT4,
|
|
95
|
+
TensorProto.INT4,
|
|
96
|
+
TensorProto.FLOAT8E4M3FN,
|
|
97
|
+
TensorProto.FLOAT8E4M3FNUZ,
|
|
98
|
+
TensorProto.FLOAT8E5M2,
|
|
99
|
+
TensorProto.FLOAT8E5M2FNUZ,
|
|
100
|
+
)
|
|
29
101
|
|
|
30
102
|
def get_zero_point_type(self, zero_point: np.ndarray) -> int:
|
|
103
|
+
zero_point_type = None
|
|
31
104
|
if (
|
|
32
105
|
zero_point.dtype == float8e4m3fn
|
|
33
106
|
and zero_point.dtype.descr[0][0] == "e4m3fn"
|
|
34
107
|
):
|
|
35
|
-
|
|
36
|
-
|
|
108
|
+
zero_point_type = TensorProto.FLOAT8E4M3FN
|
|
109
|
+
elif (
|
|
37
110
|
zero_point.dtype == float8e4m3fnuz
|
|
38
111
|
and zero_point.dtype.descr[0][0] == "e4m3fnuz"
|
|
39
112
|
):
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
113
|
+
zero_point_type = TensorProto.FLOAT8E4M3FNUZ
|
|
114
|
+
elif zero_point.dtype == float8e5m2 and zero_point.dtype.descr[0][0] == "e5m2":
|
|
115
|
+
zero_point_type = TensorProto.FLOAT8E5M2
|
|
116
|
+
elif (
|
|
44
117
|
zero_point.dtype == float8e5m2fnuz
|
|
45
118
|
and zero_point.dtype.descr[0][0] == "e5m2fnuz"
|
|
46
119
|
):
|
|
47
|
-
|
|
48
|
-
|
|
120
|
+
zero_point_type = TensorProto.FLOAT8E5M2FNUZ
|
|
121
|
+
elif zero_point.dtype == uint4 and zero_point.dtype.descr[0][0] == "uint4":
|
|
122
|
+
zero_point_type = TensorProto.UINT4
|
|
123
|
+
elif zero_point.dtype == int4 and zero_point.dtype.descr[0][0] == "int4":
|
|
124
|
+
zero_point_type = TensorProto.INT4
|
|
125
|
+
else:
|
|
126
|
+
zero_point_type = np_dtype_to_tensor_dtype(zero_point.dtype)
|
|
127
|
+
return zero_point_type
|
|
49
128
|
|
|
50
|
-
def
|
|
129
|
+
def _run(
|
|
51
130
|
self,
|
|
52
131
|
x: np.ndarray,
|
|
53
132
|
y_scale: np.ndarray,
|
|
54
|
-
zero_point:
|
|
133
|
+
zero_point: np.ndarray | None = None,
|
|
55
134
|
axis: int = 1,
|
|
56
135
|
saturate: bool = True,
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
new_shape[axis] = len(y_scale)
|
|
65
|
-
x = x / y_scale.reshape(new_shape)
|
|
66
|
-
else:
|
|
67
|
-
x = x / y_scale
|
|
68
|
-
new_shape = x.shape # unused
|
|
136
|
+
block_size: int | None = None,
|
|
137
|
+
output_dtype: np.dtype | None = None,
|
|
138
|
+
) -> tuple[np.ndarray]:
|
|
139
|
+
y_scale = reshape_input(y_scale, x.shape, axis, block_size)
|
|
140
|
+
|
|
141
|
+
# Determine output data type
|
|
142
|
+
tensor_type = output_dtype
|
|
69
143
|
if zero_point is not None:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if len(y_scale.shape) > 0:
|
|
75
|
-
xi += zero_point.reshape(new_shape)
|
|
76
|
-
else:
|
|
77
|
-
xi += zero_point
|
|
78
|
-
dtype = tensor_dtype_to_np_dtype(tensor_type)
|
|
79
|
-
return (np.clip(xi, 0, 255).astype(dtype),)
|
|
80
|
-
|
|
81
|
-
if tensor_type == TensorProto.INT8:
|
|
82
|
-
xi = np.rint(x).astype(np.int32)
|
|
83
|
-
if len(y_scale.shape) > 0:
|
|
84
|
-
xi += zero_point.reshape(new_shape)
|
|
85
|
-
else:
|
|
86
|
-
xi += zero_point
|
|
87
|
-
dtype = tensor_dtype_to_np_dtype(tensor_type)
|
|
88
|
-
return (np.clip(xi, -128, 127).astype(dtype),)
|
|
89
|
-
|
|
90
|
-
if tensor_type == TensorProto.FLOAT8E4M3FN:
|
|
91
|
-
f8 = _CommonQuantizeLinear.float32_to_float8e4m3(x, saturate=saturate)
|
|
92
|
-
return (f8.astype(float8e4m3fn),) # type: ignore[attr-defined]
|
|
93
|
-
|
|
94
|
-
if tensor_type == TensorProto.FLOAT8E4M3FNUZ:
|
|
95
|
-
f8 = _CommonQuantizeLinear.float32_to_float8e4m3(
|
|
96
|
-
x, uz=True, saturate=saturate
|
|
144
|
+
zero_point_type = self.get_zero_point_type(zero_point)
|
|
145
|
+
if output_dtype and output_dtype != zero_point_type:
|
|
146
|
+
raise ValueError(
|
|
147
|
+
f"Mismatched output data-types: output_dtype={output_dtype}, zero_point type={zero_point_type}"
|
|
97
148
|
)
|
|
98
|
-
|
|
149
|
+
tensor_type = zero_point_type
|
|
150
|
+
tensor_type = tensor_type or TensorProto.UINT8
|
|
151
|
+
|
|
152
|
+
if tensor_type not in _CommonQuantizeLinear.quant_types:
|
|
153
|
+
raise ValueError(
|
|
154
|
+
f"Unexpected type: output_dtype={tensor_type} is not a supported quantized type."
|
|
155
|
+
)
|
|
99
156
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
157
|
+
# Compute
|
|
158
|
+
zero_point = (
|
|
159
|
+
reshape_input(zero_point, x.shape, axis, block_size)
|
|
160
|
+
if zero_point is not None
|
|
161
|
+
else 0
|
|
162
|
+
)
|
|
163
|
+
x = x / y_scale
|
|
164
|
+
|
|
165
|
+
if tensor_type in _CommonQuantizeLinear.quant_integer_ranges:
|
|
166
|
+
xi = np.rint(x).astype(np.int32)
|
|
167
|
+
xi += zero_point
|
|
168
|
+
dtype = tensor_dtype_to_np_dtype(tensor_type)
|
|
169
|
+
quant_range = _CommonQuantizeLinear.quant_integer_ranges[tensor_type]
|
|
170
|
+
return (np.clip(xi, quant_range[0], quant_range[1]).astype(dtype),)
|
|
171
|
+
|
|
172
|
+
if tensor_type == TensorProto.FLOAT8E4M3FN:
|
|
173
|
+
f8 = _CommonQuantizeLinear.float32_to_float8e4m3(x, saturate=saturate)
|
|
174
|
+
return (f8.astype(float8e4m3fn),) # type: ignore[attr-defined]
|
|
175
|
+
|
|
176
|
+
if tensor_type == TensorProto.FLOAT8E4M3FNUZ:
|
|
177
|
+
f8 = _CommonQuantizeLinear.float32_to_float8e4m3(
|
|
178
|
+
x, uz=True, saturate=saturate
|
|
179
|
+
)
|
|
180
|
+
return (f8.astype(float8e4m3fnuz),) # type: ignore[attr-defined]
|
|
103
181
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
182
|
+
if tensor_type == TensorProto.FLOAT8E5M2:
|
|
183
|
+
f8 = _CommonQuantizeLinear.float32_to_float8e5m2(x, saturate=saturate)
|
|
184
|
+
return (f8.astype(float8e5m2),) # type: ignore[attr-defined]
|
|
185
|
+
|
|
186
|
+
if tensor_type == TensorProto.FLOAT8E5M2FNUZ:
|
|
187
|
+
f8 = _CommonQuantizeLinear.float32_to_float8e5m2(
|
|
188
|
+
x, fn=True, uz=True, saturate=saturate
|
|
189
|
+
)
|
|
190
|
+
return (f8.astype(float8e5m2fnuz),) # type: ignore[attr-defined]
|
|
109
191
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
192
|
+
if tensor_type in (TensorProto.UINT4, TensorProto.INT4):
|
|
193
|
+
xi = np.rint(x).astype(np.int32)
|
|
194
|
+
xi += zero_point
|
|
195
|
+
single_func = lambda x: subbyte.float32_to_4bit_unpacked( # noqa: E731
|
|
196
|
+
x, signed=(tensor_type == TensorProto.INT4)
|
|
113
197
|
)
|
|
198
|
+
func = np.vectorize(single_func)
|
|
199
|
+
i4 = func(xi)
|
|
200
|
+
return (i4,) # type: ignore[attr-defined]
|
|
114
201
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
202
|
+
raise ValueError(
|
|
203
|
+
f"Unexpected type: output_dtype={tensor_type} is not a supported quantized type."
|
|
204
|
+
)
|
|
118
205
|
|
|
119
206
|
|
|
120
207
|
class QuantizeLinear_10(_CommonQuantizeLinear):
|
|
121
|
-
def _run(self,
|
|
122
|
-
|
|
123
|
-
|
|
208
|
+
def _run(self, x, y_scale, zero_point=None, axis=None): # type: ignore
|
|
209
|
+
if len(y_scale.shape) > 1:
|
|
210
|
+
raise ValueError("Input 2 must be a vector or a number.")
|
|
211
|
+
return super()._run(x, y_scale, zero_point, axis=axis) # type: ignore
|
|
124
212
|
|
|
125
213
|
|
|
126
214
|
class QuantizeLinear_19(_CommonQuantizeLinear):
|
|
127
|
-
def _run(self,
|
|
215
|
+
def _run(self, x, y_scale, zero_point=None, axis=None, saturate=None): # type: ignore
|
|
216
|
+
if len(y_scale.shape) > 1:
|
|
217
|
+
raise ValueError("Input 2 must be a vector or a number.")
|
|
218
|
+
return super()._run(x, y_scale, zero_point, axis=axis, saturate=saturate) # type: ignore
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class QuantizeLinear_21(_CommonQuantizeLinear):
|
|
222
|
+
def _run(self, *args, axis=None, saturate=None, block_size=None, output_dtype=None): # type: ignore
|
|
128
223
|
# args: x, y_scale, zero_point
|
|
129
|
-
return
|
|
224
|
+
return super()._run(*args, axis=axis, saturate=saturate, block_size=block_size, output_dtype=output_dtype) # type: ignore
|
onnx/reference/ops/op_resize.py
CHANGED
|
@@ -11,8 +11,7 @@ from onnx.reference.op_run import OpRun
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def _cartesian(arrays: list[np.ndarray], out: np.ndarray | None = None) -> np.ndarray:
|
|
14
|
-
"""
|
|
15
|
-
From https://stackoverflow.com/a/1235363
|
|
14
|
+
"""From https://stackoverflow.com/a/1235363
|
|
16
15
|
Generate a cartesian product of input arrays.
|
|
17
16
|
Parameters
|
|
18
17
|
----------
|
|
@@ -20,12 +19,14 @@ def _cartesian(arrays: list[np.ndarray], out: np.ndarray | None = None) -> np.nd
|
|
|
20
19
|
1-D arrays to form the cartesian product of.
|
|
21
20
|
out : ndarray
|
|
22
21
|
Array to place the cartesian product in.
|
|
23
|
-
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
24
|
-------
|
|
25
25
|
out : ndarray
|
|
26
26
|
2-D array of shape (M, len(arrays)) containing cartesian products
|
|
27
27
|
formed of input arrays.
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
Examples:
|
|
29
30
|
--------
|
|
30
31
|
>>> cartesian(([1, 2, 3], [4, 5], [6, 7]))
|
|
31
32
|
array([[1, 4, 6],
|
|
@@ -41,7 +42,6 @@ def _cartesian(arrays: list[np.ndarray], out: np.ndarray | None = None) -> np.nd
|
|
|
41
42
|
[3, 5, 6],
|
|
42
43
|
[3, 5, 7]])
|
|
43
44
|
"""
|
|
44
|
-
|
|
45
45
|
arrays = [np.asarray(x) for x in arrays]
|
|
46
46
|
dtype = arrays[0].dtype
|
|
47
47
|
|
|
@@ -127,8 +127,7 @@ def _linear_coeffs_antialias(ratio: float, scale: float) -> np.ndarray:
|
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
def _get_neighbor_idxes(x: float, n: int, limit: int) -> np.ndarray:
|
|
130
|
-
"""
|
|
131
|
-
Return the n nearest indexes to x among `[0, limit)`,
|
|
130
|
+
"""Return the n nearest indexes to x among `[0, limit)`,
|
|
132
131
|
prefer the indexes smaller than x.
|
|
133
132
|
As a result, the ratio must be in `(0, 1]`.
|
|
134
133
|
|
|
@@ -142,10 +141,13 @@ def _get_neighbor_idxes(x: float, n: int, limit: int) -> np.ndarray:
|
|
|
142
141
|
get_neighbor_idxes(4.4, 1, 10) == [4]
|
|
143
142
|
get_neighbor_idxes(4.6, 1, 10) == [5]
|
|
144
143
|
|
|
145
|
-
:
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
144
|
+
Args:
|
|
145
|
+
x: float.
|
|
146
|
+
n: the number of the wanted indexes.
|
|
147
|
+
limit: the maximum value of index.
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
An np.array containing n nearest indexes in ascending order
|
|
149
151
|
"""
|
|
150
152
|
idxes = sorted(range(limit), key=lambda idx: (abs(x - idx), idx))[:n]
|
|
151
153
|
idxes = sorted(idxes)
|
|
@@ -153,16 +155,18 @@ def _get_neighbor_idxes(x: float, n: int, limit: int) -> np.ndarray:
|
|
|
153
155
|
|
|
154
156
|
|
|
155
157
|
def _get_neighbor(x: float, n: int, data: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
|
|
156
|
-
"""
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
158
|
+
"""Pad `data` in 'edge' mode, and get n nearest elements in the padded array and their indexes in the original array.
|
|
159
|
+
|
|
160
|
+
Args:
|
|
161
|
+
x: Center index (in the unpadded coordinate system) of the found
|
|
162
|
+
nearest elements.
|
|
163
|
+
n: The number of neighbors.
|
|
164
|
+
data: The array.
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
A tuple containing the indexes of neighbor elements (the index
|
|
168
|
+
can be smaller than 0 or higher than len(data)) and the value of
|
|
169
|
+
these elements.
|
|
166
170
|
"""
|
|
167
171
|
pad_width = np.ceil(n / 2).astype(int)
|
|
168
172
|
padded = np.pad(data, pad_width, mode="edge")
|
onnx/reference/ops/op_rnn.py
CHANGED
|
@@ -36,22 +36,30 @@ class CommonRNN(OpRun):
|
|
|
36
36
|
|
|
37
37
|
self.f1 = self.choose_act(
|
|
38
38
|
self.activations[0], # type: ignore
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
39
|
+
(
|
|
40
|
+
self.activation_alpha[0] # type: ignore
|
|
41
|
+
if self.activation_alpha is not None and len(self.activation_alpha) > 0 # type: ignore
|
|
42
|
+
else None
|
|
43
|
+
),
|
|
44
|
+
(
|
|
45
|
+
self.activation_beta[0] # type: ignore
|
|
46
|
+
if self.activation_beta is not None and len(self.activation_beta) > 0 # type: ignore
|
|
47
|
+
else None
|
|
48
|
+
),
|
|
45
49
|
)
|
|
46
50
|
if len(self.activations) > 1: # type: ignore
|
|
47
51
|
self.f2 = self.choose_act(
|
|
48
52
|
self.activations[1], # type: ignore
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
(
|
|
54
|
+
self.activation_alpha[1] # type: ignore
|
|
55
|
+
if self.activation_alpha is not None and len(self.activation_alpha) > 1 # type: ignore
|
|
56
|
+
else None
|
|
57
|
+
),
|
|
58
|
+
(
|
|
59
|
+
self.activation_beta[1] # type: ignore
|
|
60
|
+
if self.activation_beta is not None and len(self.activation_beta) > 1 # type: ignore
|
|
61
|
+
else None
|
|
62
|
+
),
|
|
55
63
|
)
|
|
56
64
|
self.n_outputs = len(onnx_node.output)
|
|
57
65
|
|
onnx/reference/ops/op_scan.py
CHANGED
|
@@ -16,10 +16,12 @@ class Scan(OpRun):
|
|
|
16
16
|
f"Parameter 'body' must have a method 'run', type {type(self.body)}." # type: ignore
|
|
17
17
|
)
|
|
18
18
|
self.input_directions_ = [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
(
|
|
20
|
+
0
|
|
21
|
+
if self.scan_input_directions is None # type: ignore
|
|
22
|
+
or i >= len(self.scan_input_directions) # type: ignore
|
|
23
|
+
else self.scan_input_directions[i]
|
|
24
|
+
) # type: ignore
|
|
23
25
|
for i in range(self.num_scan_inputs) # type: ignore
|
|
24
26
|
]
|
|
25
27
|
max_dir_in = max(self.input_directions_)
|
|
@@ -28,9 +30,11 @@ class Scan(OpRun):
|
|
|
28
30
|
"Scan is not implemented for other output input_direction than 0."
|
|
29
31
|
)
|
|
30
32
|
self.input_axes_ = [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
(
|
|
34
|
+
0
|
|
35
|
+
if self.scan_input_axes is None or i >= len(self.scan_input_axes) # type: ignore
|
|
36
|
+
else self.scan_input_axes[i]
|
|
37
|
+
) # type: ignore
|
|
34
38
|
for i in range(self.num_scan_inputs) # type: ignore
|
|
35
39
|
]
|
|
36
40
|
max_axe_in = max(self.input_axes_)
|
|
@@ -44,10 +48,12 @@ class Scan(OpRun):
|
|
|
44
48
|
num_scan_outputs = len(args) - num_loop_state_vars
|
|
45
49
|
|
|
46
50
|
output_directions = [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
(
|
|
52
|
+
0
|
|
53
|
+
if self.scan_output_directions is None # type: ignore
|
|
54
|
+
or i >= len(self.scan_output_directions) # type: ignore
|
|
55
|
+
else self.scan_output_directions[i]
|
|
56
|
+
) # type: ignore
|
|
51
57
|
for i in range(num_scan_outputs)
|
|
52
58
|
]
|
|
53
59
|
max_dir_out = max(output_directions)
|
|
@@ -56,9 +62,11 @@ class Scan(OpRun):
|
|
|
56
62
|
"Scan is not implemented for other output output_direction than 0."
|
|
57
63
|
)
|
|
58
64
|
output_axes = [
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
(
|
|
66
|
+
0
|
|
67
|
+
if self.scan_output_axes is None or i >= len(self.scan_output_axes) # type: ignore
|
|
68
|
+
else self.scan_output_axes[i]
|
|
69
|
+
) # type: ignore
|
|
62
70
|
for i in range(num_scan_outputs)
|
|
63
71
|
]
|
|
64
72
|
max_axe_out = max(output_axes)
|
|
@@ -140,4 +148,4 @@ class Scan(OpRun):
|
|
|
140
148
|
for res in results:
|
|
141
149
|
conc = np.vstack(res)
|
|
142
150
|
states.append(conc)
|
|
143
|
-
return tuple(states)
|
|
151
|
+
return self._check_and_fix_outputs(tuple(states))
|