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
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
# SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
# type: ignore
|
|
5
5
|
|
|
6
|
-
"""
|
|
7
|
-
You can run a specific test by using the following syntax.
|
|
6
|
+
"""You can run a specific test by using the following syntax.
|
|
8
7
|
|
|
9
8
|
::
|
|
10
9
|
|
|
@@ -27,7 +26,16 @@ import parameterized
|
|
|
27
26
|
import version_utils
|
|
28
27
|
from numpy.testing import assert_allclose
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
import onnx.reference.custom_element_types as custom
|
|
30
|
+
from onnx import (
|
|
31
|
+
AttributeProto,
|
|
32
|
+
FunctionProto,
|
|
33
|
+
ModelProto,
|
|
34
|
+
TensorProto,
|
|
35
|
+
checker,
|
|
36
|
+
parser,
|
|
37
|
+
subbyte,
|
|
38
|
+
)
|
|
31
39
|
from onnx.backend.test.case.node.roialign import get_roi_align_input_values
|
|
32
40
|
from onnx.checker import check_model
|
|
33
41
|
from onnx.defs import onnx_opset_version
|
|
@@ -40,6 +48,7 @@ from onnx.helper import (
|
|
|
40
48
|
make_model,
|
|
41
49
|
make_model_gen_version,
|
|
42
50
|
make_node,
|
|
51
|
+
make_operatorsetid,
|
|
43
52
|
make_opsetid,
|
|
44
53
|
make_sequence_type_proto,
|
|
45
54
|
make_tensor,
|
|
@@ -141,15 +150,17 @@ def run_ort_inference(onnx_model):
|
|
|
141
150
|
|
|
142
151
|
|
|
143
152
|
def im2col_naive_implementation(data, kernel_shape, dilations, pads, strides): # type: ignore
|
|
144
|
-
"""
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
"""Naive implementation for `im2col`.
|
|
154
|
+
|
|
155
|
+
Args:
|
|
156
|
+
data: image (float)
|
|
157
|
+
kernel_shape: kernel shape
|
|
158
|
+
dilations: dilations
|
|
159
|
+
pads: pads
|
|
160
|
+
strides: strides
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
result
|
|
153
164
|
"""
|
|
154
165
|
if not isinstance(kernel_shape, tuple):
|
|
155
166
|
raise TypeError(f"Unexpected type {type(kernel_shape)!r} for kernel_shape.")
|
|
@@ -223,8 +234,7 @@ class TestReferenceEvaluator(unittest.TestCase):
|
|
|
223
234
|
|
|
224
235
|
@staticmethod
|
|
225
236
|
def _load_model(m_def: str) -> ModelProto:
|
|
226
|
-
"""
|
|
227
|
-
Parses a model from a string representation, including checking
|
|
237
|
+
"""Parses a model from a string representation, including checking
|
|
228
238
|
the model for correctness
|
|
229
239
|
"""
|
|
230
240
|
m = parser.parse_model(m_def)
|
|
@@ -1186,6 +1196,85 @@ class TestReferenceEvaluator(unittest.TestCase):
|
|
|
1186
1196
|
expected = 1 / (x + 0.5)
|
|
1187
1197
|
assert_allclose(expected, got)
|
|
1188
1198
|
|
|
1199
|
+
def test_custom_no_output_tuple(self):
|
|
1200
|
+
class InvAlpha(OpRun):
|
|
1201
|
+
op_domain = "custom"
|
|
1202
|
+
|
|
1203
|
+
def _run(self, x, alpha=None): # type: ignore
|
|
1204
|
+
alpha = alpha or self.alpha # type: ignore
|
|
1205
|
+
return 1 / (x + alpha)
|
|
1206
|
+
|
|
1207
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
|
|
1208
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
1209
|
+
node1 = make_node("InvAlpha", ["X"], ["Y"], alpha=0.5, domain="custom")
|
|
1210
|
+
graph = make_graph([node1], "rs", [X], [Y])
|
|
1211
|
+
onnx_model = make_model(graph, opset_imports=[make_opsetid("custom", 1)])
|
|
1212
|
+
x = np.arange(60).reshape((3, 4, 5)).astype(np.float32) + 1
|
|
1213
|
+
ref = ReferenceEvaluator(onnx_model, new_ops=[InvAlpha])
|
|
1214
|
+
with self.assertRaises(TypeError):
|
|
1215
|
+
ref.run(None, {"X": x})
|
|
1216
|
+
|
|
1217
|
+
def test_custom_empty_output(self):
|
|
1218
|
+
class InvAlpha(OpRun):
|
|
1219
|
+
op_domain = "custom"
|
|
1220
|
+
|
|
1221
|
+
def _run(self, x, alpha=None): # type: ignore
|
|
1222
|
+
return tuple()
|
|
1223
|
+
|
|
1224
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
|
|
1225
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
1226
|
+
node1 = make_node("InvAlpha", ["X"], ["Y"], alpha=0.5, domain="custom")
|
|
1227
|
+
graph = make_graph([node1], "rs", [X], [Y])
|
|
1228
|
+
onnx_model = make_model(graph, opset_imports=[make_opsetid("custom", 1)])
|
|
1229
|
+
x = np.arange(60).reshape((3, 4, 5)).astype(np.float32) + 1
|
|
1230
|
+
ref = ReferenceEvaluator(onnx_model, new_ops=[InvAlpha])
|
|
1231
|
+
with self.assertRaises(ValueError):
|
|
1232
|
+
ref.run(None, {"X": x})
|
|
1233
|
+
|
|
1234
|
+
def test_custom_tuple_tuple(self):
|
|
1235
|
+
class InvAlpha(OpRun):
|
|
1236
|
+
op_domain = "custom"
|
|
1237
|
+
|
|
1238
|
+
def _run(self, x, alpha=None): # type: ignore
|
|
1239
|
+
alpha = alpha or self.alpha # type: ignore
|
|
1240
|
+
res = tuple([tuple([1 / (x + alpha)])]) # noqa: C409
|
|
1241
|
+
assert isinstance(res, tuple)
|
|
1242
|
+
assert isinstance(res[0], tuple)
|
|
1243
|
+
return res
|
|
1244
|
+
|
|
1245
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
|
|
1246
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
1247
|
+
node1 = make_node("InvAlpha", ["X"], ["Y"], alpha=0.5, domain="custom")
|
|
1248
|
+
graph = make_graph([node1], "rs", [X], [Y])
|
|
1249
|
+
onnx_model = make_model(graph, opset_imports=[make_opsetid("custom", 1)])
|
|
1250
|
+
x = np.arange(60).reshape((3, 4, 5)).astype(np.float32) + 1
|
|
1251
|
+
ref = ReferenceEvaluator(onnx_model, new_ops=[InvAlpha])
|
|
1252
|
+
with self.assertRaises(TypeError):
|
|
1253
|
+
ref.run(None, {"X": x})
|
|
1254
|
+
|
|
1255
|
+
def test_custom_tuple_unexpected_type(self):
|
|
1256
|
+
class CustomType:
|
|
1257
|
+
pass
|
|
1258
|
+
|
|
1259
|
+
class InvAlpha(OpRun):
|
|
1260
|
+
op_domain = "custom"
|
|
1261
|
+
|
|
1262
|
+
def _run(self, x, alpha=None): # type: ignore
|
|
1263
|
+
res = tuple([CustomType()]) # noqa: C409
|
|
1264
|
+
assert isinstance(res, tuple)
|
|
1265
|
+
assert isinstance(res[0], CustomType)
|
|
1266
|
+
return res
|
|
1267
|
+
|
|
1268
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
|
|
1269
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
1270
|
+
node1 = make_node("InvAlpha", ["X"], ["Y"], alpha=0.5, domain="custom")
|
|
1271
|
+
graph = make_graph([node1], "rs", [X], [Y])
|
|
1272
|
+
onnx_model = make_model(graph, opset_imports=[make_opsetid("custom", 1)])
|
|
1273
|
+
x = np.arange(60).reshape((3, 4, 5)).astype(np.float32) + 1
|
|
1274
|
+
ref = ReferenceEvaluator(onnx_model, new_ops=[InvAlpha])
|
|
1275
|
+
with self.assertRaises(TypeError):
|
|
1276
|
+
ref.run(None, {"X": x})
|
|
1277
|
+
|
|
1189
1278
|
def test_loop(self):
|
|
1190
1279
|
# Given a tensor x of values [x1, ..., xN],
|
|
1191
1280
|
# Return a sequence of tensors of
|
|
@@ -3501,6 +3590,389 @@ class TestReferenceEvaluator(unittest.TestCase):
|
|
|
3501
3590
|
got = ref.run(None, {"X": data})
|
|
3502
3591
|
assert_allclose(expected, got[0])
|
|
3503
3592
|
|
|
3593
|
+
def test_quantize_linear_uint16(self):
|
|
3594
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None])
|
|
3595
|
+
Y = make_tensor_value_info("Y", TensorProto.UINT16, [None])
|
|
3596
|
+
model = make_model(
|
|
3597
|
+
make_graph(
|
|
3598
|
+
[
|
|
3599
|
+
make_node("QuantizeLinear", ["X", "scale", "zero"], ["Y"]),
|
|
3600
|
+
],
|
|
3601
|
+
"g",
|
|
3602
|
+
[X],
|
|
3603
|
+
[Y],
|
|
3604
|
+
[
|
|
3605
|
+
make_tensor("scale", TensorProto.FLOAT, [1], [2.0]),
|
|
3606
|
+
make_tensor("zero", TensorProto.UINT16, [1], [32767]),
|
|
3607
|
+
],
|
|
3608
|
+
)
|
|
3609
|
+
)
|
|
3610
|
+
ref = ReferenceEvaluator(model)
|
|
3611
|
+
data = np.array(
|
|
3612
|
+
[
|
|
3613
|
+
# rounding half to even
|
|
3614
|
+
0.0,
|
|
3615
|
+
-128.0,
|
|
3616
|
+
3.0,
|
|
3617
|
+
-3.0,
|
|
3618
|
+
# round < .5
|
|
3619
|
+
2.9,
|
|
3620
|
+
-2.9,
|
|
3621
|
+
# round > .5
|
|
3622
|
+
3.1,
|
|
3623
|
+
-3.1,
|
|
3624
|
+
# critical point
|
|
3625
|
+
65536.0,
|
|
3626
|
+
-65534.0,
|
|
3627
|
+
# saturate case
|
|
3628
|
+
70000.0,
|
|
3629
|
+
-70000.0,
|
|
3630
|
+
],
|
|
3631
|
+
dtype=np.float32,
|
|
3632
|
+
)
|
|
3633
|
+
expected = np.array(
|
|
3634
|
+
[
|
|
3635
|
+
32767,
|
|
3636
|
+
32703,
|
|
3637
|
+
32769,
|
|
3638
|
+
32765,
|
|
3639
|
+
32768,
|
|
3640
|
+
32766,
|
|
3641
|
+
32769,
|
|
3642
|
+
32765,
|
|
3643
|
+
65535,
|
|
3644
|
+
0,
|
|
3645
|
+
65535,
|
|
3646
|
+
0,
|
|
3647
|
+
],
|
|
3648
|
+
dtype=np.uint16,
|
|
3649
|
+
)
|
|
3650
|
+
got = ref.run(None, {"X": data})
|
|
3651
|
+
assert_allclose(expected, got[0])
|
|
3652
|
+
|
|
3653
|
+
def test_quantize_linear_int16(self):
|
|
3654
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None])
|
|
3655
|
+
Y = make_tensor_value_info("Y", TensorProto.INT16, [None])
|
|
3656
|
+
model = make_model(
|
|
3657
|
+
make_graph(
|
|
3658
|
+
[
|
|
3659
|
+
make_node("QuantizeLinear", ["X", "scale", "zero"], ["Y"]),
|
|
3660
|
+
],
|
|
3661
|
+
"g",
|
|
3662
|
+
[X],
|
|
3663
|
+
[Y],
|
|
3664
|
+
[
|
|
3665
|
+
make_tensor("scale", TensorProto.FLOAT, [1], [2.0]),
|
|
3666
|
+
make_tensor("zero", TensorProto.INT16, [1], [256]),
|
|
3667
|
+
],
|
|
3668
|
+
)
|
|
3669
|
+
)
|
|
3670
|
+
ref = ReferenceEvaluator(model)
|
|
3671
|
+
data = np.array(
|
|
3672
|
+
[
|
|
3673
|
+
# rounding half to even
|
|
3674
|
+
0.0,
|
|
3675
|
+
-514.0,
|
|
3676
|
+
3.0,
|
|
3677
|
+
-3.0,
|
|
3678
|
+
# round < .5
|
|
3679
|
+
2.9,
|
|
3680
|
+
-2.9,
|
|
3681
|
+
# round > .5
|
|
3682
|
+
3.1,
|
|
3683
|
+
-3.1,
|
|
3684
|
+
# critical point
|
|
3685
|
+
65022.0,
|
|
3686
|
+
-66046.0,
|
|
3687
|
+
65023.0,
|
|
3688
|
+
-66047.0,
|
|
3689
|
+
65024.0,
|
|
3690
|
+
-66048.0,
|
|
3691
|
+
# saturate case
|
|
3692
|
+
70000.0,
|
|
3693
|
+
-70000.0,
|
|
3694
|
+
],
|
|
3695
|
+
dtype=np.float32,
|
|
3696
|
+
)
|
|
3697
|
+
expected = np.array(
|
|
3698
|
+
[
|
|
3699
|
+
256,
|
|
3700
|
+
-1,
|
|
3701
|
+
258,
|
|
3702
|
+
254,
|
|
3703
|
+
257,
|
|
3704
|
+
255,
|
|
3705
|
+
258,
|
|
3706
|
+
254,
|
|
3707
|
+
32767,
|
|
3708
|
+
-32767,
|
|
3709
|
+
32767,
|
|
3710
|
+
-32768,
|
|
3711
|
+
32767,
|
|
3712
|
+
-32768,
|
|
3713
|
+
32767,
|
|
3714
|
+
-32768,
|
|
3715
|
+
],
|
|
3716
|
+
dtype=np.int16,
|
|
3717
|
+
)
|
|
3718
|
+
got = ref.run(None, {"X": data})
|
|
3719
|
+
assert_allclose(expected, got[0])
|
|
3720
|
+
|
|
3721
|
+
def test_dequantize_linear_uint16(self):
|
|
3722
|
+
X = make_tensor_value_info("X", TensorProto.UINT16, [None])
|
|
3723
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
3724
|
+
model = make_model(
|
|
3725
|
+
make_graph(
|
|
3726
|
+
[
|
|
3727
|
+
make_node(
|
|
3728
|
+
"DequantizeLinear", ["X", "scale", "zero"], ["Y"], axis=0
|
|
3729
|
+
),
|
|
3730
|
+
],
|
|
3731
|
+
"g",
|
|
3732
|
+
[X],
|
|
3733
|
+
[Y],
|
|
3734
|
+
[
|
|
3735
|
+
make_tensor("scale", TensorProto.FLOAT, [1], [2.0]),
|
|
3736
|
+
make_tensor("zero", TensorProto.UINT16, [1], [32767]),
|
|
3737
|
+
],
|
|
3738
|
+
)
|
|
3739
|
+
)
|
|
3740
|
+
ref = ReferenceEvaluator(model)
|
|
3741
|
+
data = np.array([30000, 31000, 32768, 33000], dtype=np.uint16)
|
|
3742
|
+
expected = np.array([-5534.0, -3534.0, 2.0, 466.0], dtype=np.float32)
|
|
3743
|
+
got = ref.run(None, {"X": data})
|
|
3744
|
+
assert_allclose(expected, got[0])
|
|
3745
|
+
|
|
3746
|
+
def test_dequantize_linear_int16(self):
|
|
3747
|
+
X = make_tensor_value_info("X", TensorProto.INT16, [None])
|
|
3748
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
3749
|
+
model = make_model(
|
|
3750
|
+
make_graph(
|
|
3751
|
+
[
|
|
3752
|
+
make_node(
|
|
3753
|
+
"DequantizeLinear", ["X", "scale", "zero"], ["Y"], axis=0
|
|
3754
|
+
),
|
|
3755
|
+
],
|
|
3756
|
+
"g",
|
|
3757
|
+
[X],
|
|
3758
|
+
[Y],
|
|
3759
|
+
[
|
|
3760
|
+
make_tensor("scale", TensorProto.FLOAT, [1], [2.0]),
|
|
3761
|
+
make_tensor("zero", TensorProto.INT16, [1], [-1024]),
|
|
3762
|
+
],
|
|
3763
|
+
)
|
|
3764
|
+
)
|
|
3765
|
+
ref = ReferenceEvaluator(model)
|
|
3766
|
+
data = np.array([-300, -30, -1025, 1270], dtype=np.int16)
|
|
3767
|
+
expected = np.array([1448.0, 1988.0, -2.0, 4588.0], dtype=np.float32)
|
|
3768
|
+
got = ref.run(None, {"X": data})
|
|
3769
|
+
assert_allclose(expected, got[0])
|
|
3770
|
+
|
|
3771
|
+
@parameterized.parameterized.expand(
|
|
3772
|
+
[
|
|
3773
|
+
(
|
|
3774
|
+
4 * np.arange(12).reshape(3, 4),
|
|
3775
|
+
np.arange(1, 7).reshape(3, 2),
|
|
3776
|
+
np.zeros((3, 2)),
|
|
3777
|
+
1,
|
|
3778
|
+
2,
|
|
3779
|
+
[[0, 4, 4, 6], [5, 7, 6, 7], [6, 7, 7, 7]],
|
|
3780
|
+
),
|
|
3781
|
+
(
|
|
3782
|
+
4 * np.arange(12).reshape(3, 4),
|
|
3783
|
+
np.arange(1, 7).reshape(3, 2),
|
|
3784
|
+
np.ones((3, 2)),
|
|
3785
|
+
1,
|
|
3786
|
+
2,
|
|
3787
|
+
[[1, 5, 5, 7], [6, 8, 7, 8], [7, 8, 8, 8]],
|
|
3788
|
+
),
|
|
3789
|
+
(
|
|
3790
|
+
np.arange(24).reshape(3, 8),
|
|
3791
|
+
[[0.25, 0.5, 1], [0.25, 0.5, 1], [0.25, 0.5, 1]],
|
|
3792
|
+
np.zeros((3, 3)),
|
|
3793
|
+
1,
|
|
3794
|
+
3,
|
|
3795
|
+
[
|
|
3796
|
+
[0, 4, 8, 6, 8, 10, 6, 7],
|
|
3797
|
+
[32, 36, 40, 22, 24, 26, 14, 15],
|
|
3798
|
+
[64, 68, 72, 38, 40, 42, 22, 23],
|
|
3799
|
+
],
|
|
3800
|
+
),
|
|
3801
|
+
(
|
|
3802
|
+
np.arange(6),
|
|
3803
|
+
[0.25, 0.5],
|
|
3804
|
+
[-1, -2],
|
|
3805
|
+
0,
|
|
3806
|
+
3,
|
|
3807
|
+
[-1, 3, 7, 4, 6, 8],
|
|
3808
|
+
),
|
|
3809
|
+
(
|
|
3810
|
+
np.ones((9, 12)),
|
|
3811
|
+
np.ones((3, 4)),
|
|
3812
|
+
np.zeros((3, 4)),
|
|
3813
|
+
0,
|
|
3814
|
+
3,
|
|
3815
|
+
None, # Blocked quantization is defined for 1-D blocks only
|
|
3816
|
+
),
|
|
3817
|
+
(
|
|
3818
|
+
np.ones((3, 4, 5, 6)),
|
|
3819
|
+
np.ones((3, 4)),
|
|
3820
|
+
np.zeros((3, 4)),
|
|
3821
|
+
2,
|
|
3822
|
+
2,
|
|
3823
|
+
None, # Scale and ZP must have the same rank as the input
|
|
3824
|
+
),
|
|
3825
|
+
]
|
|
3826
|
+
)
|
|
3827
|
+
def test_blocked_quantize_linear(
|
|
3828
|
+
self, x, scale, zero_point, axis, block_size, expected
|
|
3829
|
+
):
|
|
3830
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None])
|
|
3831
|
+
Y = make_tensor_value_info("Y", TensorProto.INT8, [None])
|
|
3832
|
+
|
|
3833
|
+
scale_data = np.array(scale, dtype=np.float32)
|
|
3834
|
+
zp_data = np.array(zero_point, dtype=np.int8)
|
|
3835
|
+
model = make_model(
|
|
3836
|
+
make_graph(
|
|
3837
|
+
[
|
|
3838
|
+
make_node(
|
|
3839
|
+
"QuantizeLinear",
|
|
3840
|
+
["X", "scale", "zero"],
|
|
3841
|
+
["Y"],
|
|
3842
|
+
axis=axis,
|
|
3843
|
+
block_size=block_size,
|
|
3844
|
+
),
|
|
3845
|
+
],
|
|
3846
|
+
"g",
|
|
3847
|
+
[X],
|
|
3848
|
+
[Y],
|
|
3849
|
+
[
|
|
3850
|
+
make_tensor(
|
|
3851
|
+
"scale", TensorProto.FLOAT, scale_data.shape, scale_data
|
|
3852
|
+
),
|
|
3853
|
+
make_tensor("zero", TensorProto.INT8, scale_data.shape, zp_data),
|
|
3854
|
+
],
|
|
3855
|
+
)
|
|
3856
|
+
)
|
|
3857
|
+
ref = ReferenceEvaluator(model)
|
|
3858
|
+
|
|
3859
|
+
data = np.array(x, dtype=np.float32)
|
|
3860
|
+
|
|
3861
|
+
if expected is not None:
|
|
3862
|
+
expected = np.array(expected, dtype=np.int8)
|
|
3863
|
+
got = ref.run(None, {"X": data})
|
|
3864
|
+
assert_allclose(expected, got[0])
|
|
3865
|
+
else:
|
|
3866
|
+
with self.assertRaises(ValueError):
|
|
3867
|
+
ref.run(None, {"X": data})
|
|
3868
|
+
|
|
3869
|
+
@parameterized.parameterized.expand(
|
|
3870
|
+
[
|
|
3871
|
+
(
|
|
3872
|
+
np.arange(12).reshape(3, 4),
|
|
3873
|
+
np.arange(1, 7).reshape(3, 2),
|
|
3874
|
+
np.zeros((3, 2)),
|
|
3875
|
+
1,
|
|
3876
|
+
2,
|
|
3877
|
+
[[0, 1, 4, 6], [12, 15, 24, 28], [40, 45, 60, 66]],
|
|
3878
|
+
),
|
|
3879
|
+
(
|
|
3880
|
+
np.arange(12).reshape(3, 4),
|
|
3881
|
+
np.arange(1, 7).reshape(3, 2),
|
|
3882
|
+
np.ones((3, 2)),
|
|
3883
|
+
1,
|
|
3884
|
+
2,
|
|
3885
|
+
[[-1, 0, 2, 4], [9, 12, 20, 24], [35, 40, 54, 60]],
|
|
3886
|
+
),
|
|
3887
|
+
(
|
|
3888
|
+
np.dstack([np.arange(4).reshape(2, 2)] * 4),
|
|
3889
|
+
np.dstack([np.array([[1, 1], [2, 3]]), np.array([[4, 5], [6, 7]])]),
|
|
3890
|
+
np.zeros((2, 2, 2)),
|
|
3891
|
+
2,
|
|
3892
|
+
2,
|
|
3893
|
+
[[[0, 0, 0, 0], [1, 1, 5, 5]], [[4, 4, 12, 12], [9, 9, 21, 21]]],
|
|
3894
|
+
),
|
|
3895
|
+
(
|
|
3896
|
+
np.arange(24).reshape(3, 8),
|
|
3897
|
+
[[2, 1, 3], [2, 1, 3], [2, 1, 3]],
|
|
3898
|
+
np.zeros((3, 3)),
|
|
3899
|
+
1,
|
|
3900
|
+
3,
|
|
3901
|
+
[
|
|
3902
|
+
[0, 2, 4, 3, 4, 5, 18, 21],
|
|
3903
|
+
[16, 18, 20, 11, 12, 13, 42, 45],
|
|
3904
|
+
[32, 34, 36, 19, 20, 21, 66, 69],
|
|
3905
|
+
],
|
|
3906
|
+
),
|
|
3907
|
+
(
|
|
3908
|
+
np.arange(
|
|
3909
|
+
6,
|
|
3910
|
+
),
|
|
3911
|
+
[2, 3],
|
|
3912
|
+
[1, 2],
|
|
3913
|
+
0,
|
|
3914
|
+
3,
|
|
3915
|
+
[-2, 0, 2, 3, 6, 9],
|
|
3916
|
+
),
|
|
3917
|
+
(
|
|
3918
|
+
np.ones((9, 12)),
|
|
3919
|
+
np.ones((3, 4)),
|
|
3920
|
+
np.zeros((3, 4)),
|
|
3921
|
+
0,
|
|
3922
|
+
3,
|
|
3923
|
+
None, # Blocked quantization is defined for 1-D blocks only
|
|
3924
|
+
),
|
|
3925
|
+
(
|
|
3926
|
+
np.ones((3, 4, 5, 6)),
|
|
3927
|
+
np.ones((3, 4)),
|
|
3928
|
+
np.zeros((3, 4)),
|
|
3929
|
+
2,
|
|
3930
|
+
2,
|
|
3931
|
+
None, # Scale and ZP must have the same rank as the input
|
|
3932
|
+
),
|
|
3933
|
+
]
|
|
3934
|
+
)
|
|
3935
|
+
def test_blocked_dequantize_linear(
|
|
3936
|
+
self, x, scale, zero_point, axis, block_size, expected
|
|
3937
|
+
):
|
|
3938
|
+
X = make_tensor_value_info("X", TensorProto.INT8, [None])
|
|
3939
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
3940
|
+
|
|
3941
|
+
scale_data = np.array(scale, dtype=np.float32)
|
|
3942
|
+
zp_data = np.array(zero_point, dtype=np.int8)
|
|
3943
|
+
model = make_model(
|
|
3944
|
+
make_graph(
|
|
3945
|
+
[
|
|
3946
|
+
make_node(
|
|
3947
|
+
"DequantizeLinear",
|
|
3948
|
+
["X", "scale", "zero"],
|
|
3949
|
+
["Y"],
|
|
3950
|
+
axis=axis,
|
|
3951
|
+
block_size=block_size,
|
|
3952
|
+
),
|
|
3953
|
+
],
|
|
3954
|
+
"g",
|
|
3955
|
+
[X],
|
|
3956
|
+
[Y],
|
|
3957
|
+
[
|
|
3958
|
+
make_tensor(
|
|
3959
|
+
"scale", TensorProto.FLOAT, scale_data.shape, scale_data
|
|
3960
|
+
),
|
|
3961
|
+
make_tensor("zero", TensorProto.INT8, scale_data.shape, zp_data),
|
|
3962
|
+
],
|
|
3963
|
+
)
|
|
3964
|
+
)
|
|
3965
|
+
ref = ReferenceEvaluator(model)
|
|
3966
|
+
data = np.array(x, dtype=np.int8)
|
|
3967
|
+
|
|
3968
|
+
if expected is not None:
|
|
3969
|
+
expected = np.array(expected, dtype=np.float32)
|
|
3970
|
+
got = ref.run(None, {"X": data})
|
|
3971
|
+
assert_allclose(expected, got[0])
|
|
3972
|
+
else:
|
|
3973
|
+
with self.assertRaises(ValueError):
|
|
3974
|
+
ref.run(None, {"X": data})
|
|
3975
|
+
|
|
3504
3976
|
def test_lrn(self):
|
|
3505
3977
|
def _expected(x, alpha, beta, bias, size):
|
|
3506
3978
|
square_sum = np.zeros((5, 5, 5, 5)).astype(np.float32)
|
|
@@ -4959,6 +5431,76 @@ class TestReferenceEvaluator(unittest.TestCase):
|
|
|
4959
5431
|
num_splits, np.array(expected_num_splits, dtype=np.int64)
|
|
4960
5432
|
)
|
|
4961
5433
|
|
|
5434
|
+
def test_qlinearconv_int8(self):
|
|
5435
|
+
node = make_node(
|
|
5436
|
+
"QLinearMatMul",
|
|
5437
|
+
inputs=[
|
|
5438
|
+
"a",
|
|
5439
|
+
"a_scale",
|
|
5440
|
+
"a_zero_point",
|
|
5441
|
+
"b",
|
|
5442
|
+
"b_scale",
|
|
5443
|
+
"b_zero_point",
|
|
5444
|
+
"y_scale",
|
|
5445
|
+
"y_zero_point",
|
|
5446
|
+
],
|
|
5447
|
+
outputs=["y"],
|
|
5448
|
+
)
|
|
5449
|
+
graph = make_graph(
|
|
5450
|
+
[node],
|
|
5451
|
+
"g",
|
|
5452
|
+
[
|
|
5453
|
+
make_tensor_value_info("a", TensorProto.FLOAT, [None, None]),
|
|
5454
|
+
make_tensor_value_info("a_scale", TensorProto.FLOAT, [1]),
|
|
5455
|
+
make_tensor_value_info("a_zero_point", TensorProto.INT8, [1]),
|
|
5456
|
+
make_tensor_value_info("b", TensorProto.FLOAT, [None, None]),
|
|
5457
|
+
make_tensor_value_info("b_scale", TensorProto.FLOAT, [1]),
|
|
5458
|
+
make_tensor_value_info("b_zero_point", TensorProto.INT8, [1]),
|
|
5459
|
+
make_tensor_value_info("y_scale", TensorProto.FLOAT, [1]),
|
|
5460
|
+
make_tensor_value_info("y_zero_point", TensorProto.INT8, [1]),
|
|
5461
|
+
],
|
|
5462
|
+
[make_tensor_value_info("y", TensorProto.FLOAT, [None, None])],
|
|
5463
|
+
)
|
|
5464
|
+
onnx_model = make_model(
|
|
5465
|
+
graph, opset_imports=[make_opsetid("", 20)], ir_version=9
|
|
5466
|
+
)
|
|
5467
|
+
sess = ReferenceEvaluator(onnx_model)
|
|
5468
|
+
|
|
5469
|
+
a = np.array([[208, 236, 0, 238], [3, 214, 255, 29]])
|
|
5470
|
+
a -= 127
|
|
5471
|
+
a = a.astype(np.int8)
|
|
5472
|
+
|
|
5473
|
+
a_scale = np.array([0.0066], dtype=np.float32)
|
|
5474
|
+
a_zero_point = np.array([113 - 127], dtype=np.int8)
|
|
5475
|
+
|
|
5476
|
+
b = np.array([[152, 51, 244], [60, 26, 255], [0, 127, 246], [127, 254, 247]])
|
|
5477
|
+
b -= 127
|
|
5478
|
+
b = b.astype(np.int8)
|
|
5479
|
+
|
|
5480
|
+
b_scale = np.array([0.00705], dtype=np.float32)
|
|
5481
|
+
b_zero_point = np.array([114 - 127], dtype=np.int8)
|
|
5482
|
+
|
|
5483
|
+
y_scale = np.array([0.0107], dtype=np.float32)
|
|
5484
|
+
y_zero_point = np.array([118 - 127], dtype=np.int8)
|
|
5485
|
+
|
|
5486
|
+
got = sess.run(
|
|
5487
|
+
None,
|
|
5488
|
+
dict(
|
|
5489
|
+
a=a,
|
|
5490
|
+
a_scale=a_scale,
|
|
5491
|
+
a_zero_point=a_zero_point,
|
|
5492
|
+
b=b,
|
|
5493
|
+
b_scale=b_scale,
|
|
5494
|
+
b_zero_point=b_zero_point,
|
|
5495
|
+
y_scale=y_scale,
|
|
5496
|
+
y_zero_point=y_zero_point,
|
|
5497
|
+
),
|
|
5498
|
+
)
|
|
5499
|
+
|
|
5500
|
+
np.testing.assert_array_equal(
|
|
5501
|
+
np.array([[41, -12, -9], [1, -75, 20]], dtype=np.int8), got[0]
|
|
5502
|
+
)
|
|
5503
|
+
|
|
4962
5504
|
@parameterized.parameterized.expand(
|
|
4963
5505
|
[
|
|
4964
5506
|
(
|
|
@@ -5012,6 +5554,351 @@ class TestReferenceEvaluator(unittest.TestCase):
|
|
|
5012
5554
|
with self.assertRaises(ValueError):
|
|
5013
5555
|
ref.run(None, {"X": np.array(["x"])})
|
|
5014
5556
|
|
|
5557
|
+
@parameterized.parameterized.expand(
|
|
5558
|
+
[
|
|
5559
|
+
(
|
|
5560
|
+
TensorProto.UINT4,
|
|
5561
|
+
[-1, 0, 1.5, 2, 3.3, 10, 20, 40],
|
|
5562
|
+
[0, 0, 2, 2, 4, 10, 20, 30],
|
|
5563
|
+
),
|
|
5564
|
+
(TensorProto.UINT4, [-1, 0, 1.5, 2, 3.3, 10, 40], [0, 0, 2, 2, 4, 10, 30]),
|
|
5565
|
+
(TensorProto.UINT4, [0], [0]),
|
|
5566
|
+
(
|
|
5567
|
+
TensorProto.INT4,
|
|
5568
|
+
[-20, -14.5, 0, 1.5, 2, 3.3, 10, 20],
|
|
5569
|
+
[-16, -14, 0, 2, 2, 4, 10, 14],
|
|
5570
|
+
),
|
|
5571
|
+
(
|
|
5572
|
+
TensorProto.INT4,
|
|
5573
|
+
[-20, -14.5, 0, 1.5, 2, 3.3, 10],
|
|
5574
|
+
[-16, -14, 0, 2, 2, 4, 10],
|
|
5575
|
+
),
|
|
5576
|
+
(TensorProto.INT4, [0], [0]),
|
|
5577
|
+
]
|
|
5578
|
+
)
|
|
5579
|
+
@unittest.skipIf(
|
|
5580
|
+
version_utils.numpy_older_than("1.22.0"),
|
|
5581
|
+
"The test requires numpy 1.22.0 or later",
|
|
5582
|
+
)
|
|
5583
|
+
def test_quantize_linear_int4(self, qtype, data, expected):
|
|
5584
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, [None])
|
|
5585
|
+
Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None])
|
|
5586
|
+
model = make_model(
|
|
5587
|
+
make_graph(
|
|
5588
|
+
[
|
|
5589
|
+
make_node(
|
|
5590
|
+
"Constant",
|
|
5591
|
+
[],
|
|
5592
|
+
["scale"],
|
|
5593
|
+
value=make_tensor("scale", TensorProto.FLOAT, [1], [2.0]),
|
|
5594
|
+
),
|
|
5595
|
+
make_node(
|
|
5596
|
+
"Constant",
|
|
5597
|
+
[],
|
|
5598
|
+
["zero"],
|
|
5599
|
+
value=make_tensor("zero", qtype, [1], [0]),
|
|
5600
|
+
),
|
|
5601
|
+
make_node("QuantizeLinear", ["X", "scale", "zero"], ["T"]),
|
|
5602
|
+
make_node("DequantizeLinear", ["T", "scale"], ["Y"], axis=0),
|
|
5603
|
+
],
|
|
5604
|
+
"g",
|
|
5605
|
+
[X],
|
|
5606
|
+
[Y],
|
|
5607
|
+
)
|
|
5608
|
+
)
|
|
5609
|
+
ref = ReferenceEvaluator(model)
|
|
5610
|
+
got = ref.run(None, {"X": np.asarray(data)})
|
|
5611
|
+
assert_allclose(expected, got[0])
|
|
5612
|
+
|
|
5613
|
+
@parameterized.parameterized.expand(
|
|
5614
|
+
itertools.product(
|
|
5615
|
+
(TensorProto.FLOAT, TensorProto.FLOAT16),
|
|
5616
|
+
(TensorProto.UINT4, TensorProto.INT4),
|
|
5617
|
+
)
|
|
5618
|
+
)
|
|
5619
|
+
def test_cast_int4_output(self, cast_from, cast_to):
|
|
5620
|
+
X = make_tensor_value_info("X", cast_from, [None])
|
|
5621
|
+
Y = make_tensor_value_info("Y", cast_to, [None])
|
|
5622
|
+
model = make_model(
|
|
5623
|
+
make_graph(
|
|
5624
|
+
[
|
|
5625
|
+
make_node("Cast", ["X"], ["Y"], to=cast_to),
|
|
5626
|
+
],
|
|
5627
|
+
"g",
|
|
5628
|
+
[X],
|
|
5629
|
+
[Y],
|
|
5630
|
+
)
|
|
5631
|
+
)
|
|
5632
|
+
ref = ReferenceEvaluator(model)
|
|
5633
|
+
data = np.array([0, 1, 2.4, 2.6, 4, 10], dtype=np.float32)
|
|
5634
|
+
signed = cast_to == TensorProto.INT4
|
|
5635
|
+
expected1 = np.array(
|
|
5636
|
+
[subbyte.float32_to_4bit_unpacked(x, signed=signed) for x in data]
|
|
5637
|
+
)
|
|
5638
|
+
got = ref.run(None, {"X": data})
|
|
5639
|
+
self.assertEqual(expected1.tolist(), got[0].tolist())
|
|
5640
|
+
|
|
5641
|
+
@parameterized.parameterized.expand(
|
|
5642
|
+
itertools.product(
|
|
5643
|
+
(TensorProto.UINT4, TensorProto.INT4),
|
|
5644
|
+
(TensorProto.FLOAT, TensorProto.FLOAT16),
|
|
5645
|
+
)
|
|
5646
|
+
)
|
|
5647
|
+
def test_cast_int4_input(self, cast_from, cast_to):
|
|
5648
|
+
X = make_tensor_value_info("X", cast_from, [None])
|
|
5649
|
+
Y = make_tensor_value_info("Y", cast_to, [None])
|
|
5650
|
+
model = make_model(
|
|
5651
|
+
make_graph(
|
|
5652
|
+
[
|
|
5653
|
+
make_node("Cast", ["X"], ["Y"], to=TensorProto.FLOAT),
|
|
5654
|
+
],
|
|
5655
|
+
"g",
|
|
5656
|
+
[X],
|
|
5657
|
+
[Y],
|
|
5658
|
+
)
|
|
5659
|
+
)
|
|
5660
|
+
ref = ReferenceEvaluator(model)
|
|
5661
|
+
data = np.array(range(0, 7), dtype=np.float32)
|
|
5662
|
+
cast_from_np = custom.uint4 if cast_from == TensorProto.UINT4 else custom.int4
|
|
5663
|
+
data = data.astype(cast_from_np)
|
|
5664
|
+
expected1 = np.array(
|
|
5665
|
+
[subbyte.float32_to_4bit_unpacked(x, cast_from_np) for x in data]
|
|
5666
|
+
)
|
|
5667
|
+
got = ref.run(None, {"X": data})
|
|
5668
|
+
self.assertEqual(expected1.tolist(), got[0].tolist())
|
|
5669
|
+
|
|
5670
|
+
def test_a_function_calling_a_function_once(self):
|
|
5671
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, ["N"])
|
|
5672
|
+
output = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5673
|
+
Z = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5674
|
+
|
|
5675
|
+
func_def_add = make_function(
|
|
5676
|
+
"this",
|
|
5677
|
+
"fctadd",
|
|
5678
|
+
["input2"],
|
|
5679
|
+
["output"],
|
|
5680
|
+
[
|
|
5681
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC0"),
|
|
5682
|
+
make_node("Add", ["input2", "one"], ["output"], name="A1"),
|
|
5683
|
+
],
|
|
5684
|
+
opset_imports=[make_operatorsetid("", 15)],
|
|
5685
|
+
)
|
|
5686
|
+
|
|
5687
|
+
func_def = make_function(
|
|
5688
|
+
"this",
|
|
5689
|
+
"fct",
|
|
5690
|
+
["input"],
|
|
5691
|
+
["output"],
|
|
5692
|
+
[
|
|
5693
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC"),
|
|
5694
|
+
make_node("Greater", ["input", "one"], ["cond"]),
|
|
5695
|
+
make_node(
|
|
5696
|
+
"If",
|
|
5697
|
+
["cond"],
|
|
5698
|
+
["output"],
|
|
5699
|
+
then_branch=make_graph(
|
|
5700
|
+
[make_node("fctadd", ["input"], ["output"], domain="this")],
|
|
5701
|
+
"gthen",
|
|
5702
|
+
[],
|
|
5703
|
+
[output],
|
|
5704
|
+
),
|
|
5705
|
+
else_branch=make_graph(
|
|
5706
|
+
[make_node("Add", ["input", "one"], ["output"], domain="")],
|
|
5707
|
+
"gelse",
|
|
5708
|
+
[],
|
|
5709
|
+
[output],
|
|
5710
|
+
),
|
|
5711
|
+
name=":IF",
|
|
5712
|
+
),
|
|
5713
|
+
],
|
|
5714
|
+
opset_imports=[
|
|
5715
|
+
make_operatorsetid("", 15),
|
|
5716
|
+
make_operatorsetid("this", 1),
|
|
5717
|
+
],
|
|
5718
|
+
)
|
|
5719
|
+
|
|
5720
|
+
model_def = make_model(
|
|
5721
|
+
make_graph(
|
|
5722
|
+
[
|
|
5723
|
+
make_node("fct", ["X"], ["output"], domain="this"),
|
|
5724
|
+
],
|
|
5725
|
+
"test",
|
|
5726
|
+
[X],
|
|
5727
|
+
[Z],
|
|
5728
|
+
),
|
|
5729
|
+
ir_version=7,
|
|
5730
|
+
opset_imports=[
|
|
5731
|
+
make_operatorsetid("", 15),
|
|
5732
|
+
make_operatorsetid("this", 1),
|
|
5733
|
+
],
|
|
5734
|
+
functions=[func_def_add, func_def],
|
|
5735
|
+
)
|
|
5736
|
+
|
|
5737
|
+
feeds = {"X": np.array([-5], dtype=np.float32)}
|
|
5738
|
+
oinf = ReferenceEvaluator(model_def)
|
|
5739
|
+
expected = oinf.run(None, feeds)
|
|
5740
|
+
|
|
5741
|
+
# inlining does not work here
|
|
5742
|
+
# inlined = inline_local_functions(model_def)
|
|
5743
|
+
# oinf = ReferenceEvaluator(inlined)
|
|
5744
|
+
# goti = oinf.run(None, feeds)
|
|
5745
|
+
# self.assertEqual(expected[0].tolist(), goti[0].tolist())
|
|
5746
|
+
self.assertEqual(expected[0], np.array([-4], dtype=np.float32))
|
|
5747
|
+
|
|
5748
|
+
def test_a_function_calling_a_function_double(self):
|
|
5749
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, ["N"])
|
|
5750
|
+
output = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5751
|
+
Z = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5752
|
+
|
|
5753
|
+
func_def_add = make_function(
|
|
5754
|
+
"this",
|
|
5755
|
+
"fctadd",
|
|
5756
|
+
["input2"],
|
|
5757
|
+
["output"],
|
|
5758
|
+
[
|
|
5759
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC0"),
|
|
5760
|
+
make_node("Add", ["input2", "one"], ["output"], name="A1"),
|
|
5761
|
+
],
|
|
5762
|
+
opset_imports=[make_operatorsetid("", 15)],
|
|
5763
|
+
)
|
|
5764
|
+
|
|
5765
|
+
func_def = make_function(
|
|
5766
|
+
"this",
|
|
5767
|
+
"fct",
|
|
5768
|
+
["input"],
|
|
5769
|
+
["output"],
|
|
5770
|
+
[
|
|
5771
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC"),
|
|
5772
|
+
make_node("Greater", ["input", "one"], ["cond"]),
|
|
5773
|
+
make_node(
|
|
5774
|
+
"If",
|
|
5775
|
+
["cond"],
|
|
5776
|
+
["output"],
|
|
5777
|
+
then_branch=make_graph(
|
|
5778
|
+
[make_node("fctadd", ["input"], ["output"], domain="this")],
|
|
5779
|
+
"gthen",
|
|
5780
|
+
[],
|
|
5781
|
+
[output],
|
|
5782
|
+
),
|
|
5783
|
+
else_branch=make_graph(
|
|
5784
|
+
[make_node("Add", ["input", "one"], ["output"], domain="")],
|
|
5785
|
+
"gelse",
|
|
5786
|
+
[],
|
|
5787
|
+
[output],
|
|
5788
|
+
),
|
|
5789
|
+
name=":IF",
|
|
5790
|
+
),
|
|
5791
|
+
],
|
|
5792
|
+
opset_imports=[
|
|
5793
|
+
make_operatorsetid("", 15),
|
|
5794
|
+
make_operatorsetid("this", 1),
|
|
5795
|
+
],
|
|
5796
|
+
)
|
|
5797
|
+
|
|
5798
|
+
model_def = make_model(
|
|
5799
|
+
make_graph(
|
|
5800
|
+
[
|
|
5801
|
+
make_node("fct", ["X"], ["ztmp"], domain="this"),
|
|
5802
|
+
make_node("fct", ["ztmp"], ["output"], domain="this"),
|
|
5803
|
+
],
|
|
5804
|
+
"test",
|
|
5805
|
+
[X],
|
|
5806
|
+
[Z],
|
|
5807
|
+
),
|
|
5808
|
+
ir_version=7,
|
|
5809
|
+
opset_imports=[
|
|
5810
|
+
make_operatorsetid("", 15),
|
|
5811
|
+
make_operatorsetid("this", 1),
|
|
5812
|
+
],
|
|
5813
|
+
functions=[func_def_add, func_def],
|
|
5814
|
+
)
|
|
5815
|
+
|
|
5816
|
+
feeds = {"X": np.array([-5], dtype=np.float32)}
|
|
5817
|
+
oinf = ReferenceEvaluator(model_def)
|
|
5818
|
+
expected = oinf.run(None, feeds)
|
|
5819
|
+
|
|
5820
|
+
# inlining does not work here
|
|
5821
|
+
# inlined = inline_local_functions(model_def)
|
|
5822
|
+
# oinf = ReferenceEvaluator(inlined)
|
|
5823
|
+
# goti = oinf.run(None, feeds)
|
|
5824
|
+
# self.assertEqual(expected[0].tolist(), goti[0].tolist())
|
|
5825
|
+
self.assertEqual(expected[0], np.array([-3], dtype=np.float32))
|
|
5826
|
+
|
|
5827
|
+
def test_overload_reference_implementation(self):
|
|
5828
|
+
X = make_tensor_value_info("X", TensorProto.FLOAT, ["N"])
|
|
5829
|
+
output = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5830
|
+
Z = make_tensor_value_info("output", TensorProto.FLOAT, ["N"])
|
|
5831
|
+
|
|
5832
|
+
func_def_add = make_function(
|
|
5833
|
+
"this",
|
|
5834
|
+
"fctadd",
|
|
5835
|
+
["input2"],
|
|
5836
|
+
["output"],
|
|
5837
|
+
[
|
|
5838
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC0"),
|
|
5839
|
+
make_node("Add", ["input2", "one"], ["output"], name="A1"),
|
|
5840
|
+
],
|
|
5841
|
+
opset_imports=[make_operatorsetid("", 15)],
|
|
5842
|
+
)
|
|
5843
|
+
|
|
5844
|
+
func_def = make_function(
|
|
5845
|
+
"this",
|
|
5846
|
+
"fct",
|
|
5847
|
+
["input"],
|
|
5848
|
+
["output"],
|
|
5849
|
+
[
|
|
5850
|
+
make_node("Constant", [], ["one"], value_floats=[1.0], name="CC"),
|
|
5851
|
+
make_node("Greater", ["input", "one"], ["cond"]),
|
|
5852
|
+
make_node(
|
|
5853
|
+
"If",
|
|
5854
|
+
["cond"],
|
|
5855
|
+
["output"],
|
|
5856
|
+
then_branch=make_graph(
|
|
5857
|
+
[make_node("fctadd", ["input"], ["output"], domain="this")],
|
|
5858
|
+
"gthen",
|
|
5859
|
+
[],
|
|
5860
|
+
[output],
|
|
5861
|
+
),
|
|
5862
|
+
else_branch=make_graph(
|
|
5863
|
+
[make_node("Add", ["input", "one"], ["output"], domain="")],
|
|
5864
|
+
"gelse",
|
|
5865
|
+
[],
|
|
5866
|
+
[output],
|
|
5867
|
+
),
|
|
5868
|
+
name=":IF",
|
|
5869
|
+
),
|
|
5870
|
+
],
|
|
5871
|
+
opset_imports=[
|
|
5872
|
+
make_operatorsetid("", 15),
|
|
5873
|
+
make_operatorsetid("this", 1),
|
|
5874
|
+
],
|
|
5875
|
+
)
|
|
5876
|
+
|
|
5877
|
+
model_def = make_model(
|
|
5878
|
+
make_graph(
|
|
5879
|
+
[
|
|
5880
|
+
make_node("fct", ["X"], ["ztmp"], domain="this"),
|
|
5881
|
+
make_node("fct", ["ztmp"], ["output"], domain="this"),
|
|
5882
|
+
],
|
|
5883
|
+
"test",
|
|
5884
|
+
[X],
|
|
5885
|
+
[Z],
|
|
5886
|
+
),
|
|
5887
|
+
ir_version=7,
|
|
5888
|
+
opset_imports=[
|
|
5889
|
+
make_operatorsetid("", 15),
|
|
5890
|
+
make_operatorsetid("this", 1),
|
|
5891
|
+
],
|
|
5892
|
+
functions=[func_def_add, func_def],
|
|
5893
|
+
)
|
|
5894
|
+
|
|
5895
|
+
class MyReferenceEvaluator(ReferenceEvaluator):
|
|
5896
|
+
pass
|
|
5897
|
+
|
|
5898
|
+
oinf = MyReferenceEvaluator(model_def)
|
|
5899
|
+
for v in oinf.functions_.values():
|
|
5900
|
+
self.assertIsInstance(v, MyReferenceEvaluator)
|
|
5901
|
+
|
|
5015
5902
|
|
|
5016
5903
|
if __name__ == "__main__":
|
|
5017
5904
|
unittest.main(verbosity=2)
|