onnx 1.15.0__cp310-cp310-win_amd64.whl → 1.16.1__cp310-cp310-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.cp310-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
|
@@ -137,8 +137,7 @@ class Runner:
|
|
|
137
137
|
|
|
138
138
|
@property
|
|
139
139
|
def test_cases(self) -> dict[str, type[unittest.TestCase]]:
|
|
140
|
-
"""
|
|
141
|
-
List of test cases to be applied on the parent scope
|
|
140
|
+
"""List of test cases to be applied on the parent scope
|
|
142
141
|
Example usage:
|
|
143
142
|
globals().update(BackendTest(backend).test_cases)
|
|
144
143
|
"""
|
|
@@ -153,8 +152,7 @@ class Runner:
|
|
|
153
152
|
|
|
154
153
|
@property
|
|
155
154
|
def test_suite(self) -> unittest.TestSuite:
|
|
156
|
-
"""
|
|
157
|
-
TestSuite that can be run by TestRunner
|
|
155
|
+
"""TestSuite that can be run by TestRunner
|
|
158
156
|
Example usage:
|
|
159
157
|
unittest.TextTestRunner().run(BackendTest(backend).test_suite)
|
|
160
158
|
"""
|
|
@@ -168,8 +166,7 @@ class Runner:
|
|
|
168
166
|
# For backward compatibility (we used to expose `.tests`)
|
|
169
167
|
@property
|
|
170
168
|
def tests(self) -> type[unittest.TestCase]:
|
|
171
|
-
"""
|
|
172
|
-
One single unittest.TestCase that hosts all the test functions
|
|
169
|
+
"""One single unittest.TestCase that hosts all the test functions
|
|
173
170
|
Example usage:
|
|
174
171
|
onnx_backend_tests = BackendTest(backend).tests
|
|
175
172
|
"""
|
|
@@ -188,15 +185,35 @@ class Runner:
|
|
|
188
185
|
outputs: Sequence[Any],
|
|
189
186
|
rtol: float,
|
|
190
187
|
atol: float,
|
|
188
|
+
model_dir: str | None = None,
|
|
191
189
|
) -> None:
|
|
192
|
-
|
|
190
|
+
try:
|
|
191
|
+
np.testing.assert_equal(len(outputs), len(ref_outputs))
|
|
192
|
+
except TypeError as e:
|
|
193
|
+
raise TypeError(
|
|
194
|
+
f"Unable to compare expected type {type(ref_outputs)} "
|
|
195
|
+
f"and runtime type {type(outputs)} (known test={model_dir or '?'!r})"
|
|
196
|
+
) from e
|
|
193
197
|
for i in range(len(outputs)):
|
|
194
198
|
if isinstance(outputs[i], (list, tuple)):
|
|
199
|
+
if not isinstance(ref_outputs[i], (list, tuple)):
|
|
200
|
+
raise AssertionError(
|
|
201
|
+
f"Unexpected type {type(outputs[i])} for outputs[{i}]. Expected "
|
|
202
|
+
f"type is {type(ref_outputs[i])} (known test={model_dir or '?'!r})."
|
|
203
|
+
)
|
|
195
204
|
for j in range(len(outputs[i])):
|
|
196
205
|
cls.assert_similar_outputs(
|
|
197
|
-
ref_outputs[i][j],
|
|
206
|
+
ref_outputs[i][j],
|
|
207
|
+
outputs[i][j],
|
|
208
|
+
rtol,
|
|
209
|
+
atol,
|
|
210
|
+
model_dir=model_dir,
|
|
198
211
|
)
|
|
199
212
|
else:
|
|
213
|
+
if not np.issubdtype(ref_outputs[i].dtype, np.number):
|
|
214
|
+
if ref_outputs[i].tolist() != outputs[i].tolist():
|
|
215
|
+
raise AssertionError(f"{ref_outputs[i]} != {outputs[i]}")
|
|
216
|
+
continue
|
|
200
217
|
np.testing.assert_equal(outputs[i].dtype, ref_outputs[i].dtype)
|
|
201
218
|
if ref_outputs[i].dtype == object: # type: ignore[attr-defined]
|
|
202
219
|
np.testing.assert_array_equal(outputs[i], ref_outputs[i])
|
|
@@ -298,9 +315,7 @@ class Runner:
|
|
|
298
315
|
def generate_dummy_data(
|
|
299
316
|
x: ValueInfoProto, seed: int = 0, name: str = "", random: bool = False
|
|
300
317
|
) -> np.ndarray:
|
|
301
|
-
"""
|
|
302
|
-
Generates a random tensor based on the input definition.
|
|
303
|
-
"""
|
|
318
|
+
"""Generates a random tensor based on the input definition."""
|
|
304
319
|
if not x.type.tensor_type:
|
|
305
320
|
raise NotImplementedError(
|
|
306
321
|
f"Input expected to have tensor type. "
|
|
@@ -437,9 +452,16 @@ class Runner:
|
|
|
437
452
|
test_data = np.load(test_data_npz, encoding="bytes")
|
|
438
453
|
inputs = list(test_data["inputs"])
|
|
439
454
|
outputs = list(prepared_model.run(inputs))
|
|
440
|
-
ref_outputs =
|
|
455
|
+
ref_outputs = tuple(
|
|
456
|
+
np.array(x) if not isinstance(x, (list, dict)) else x
|
|
457
|
+
for f in test_data["outputs"]
|
|
458
|
+
)
|
|
441
459
|
self.assert_similar_outputs(
|
|
442
|
-
ref_outputs,
|
|
460
|
+
ref_outputs,
|
|
461
|
+
outputs,
|
|
462
|
+
rtol=model_test.rtol,
|
|
463
|
+
atol=model_test.atol,
|
|
464
|
+
model_dir=model_dir,
|
|
443
465
|
)
|
|
444
466
|
|
|
445
467
|
for test_data_dir in glob.glob(os.path.join(model_dir, "test_data_set*")):
|
|
@@ -459,7 +481,11 @@ class Runner:
|
|
|
459
481
|
)
|
|
460
482
|
outputs = list(prepared_model.run(inputs))
|
|
461
483
|
self.assert_similar_outputs(
|
|
462
|
-
ref_outputs,
|
|
484
|
+
ref_outputs,
|
|
485
|
+
outputs,
|
|
486
|
+
rtol=model_test.rtol,
|
|
487
|
+
atol=model_test.atol,
|
|
488
|
+
model_dir=model_dir,
|
|
463
489
|
)
|
|
464
490
|
|
|
465
491
|
if model_test.name in self._test_kwargs:
|
|
@@ -488,7 +514,9 @@ class Runner:
|
|
|
488
514
|
elif model_type_proto.HasField("tensor_type"):
|
|
489
515
|
tensor = onnx.TensorProto()
|
|
490
516
|
tensor.ParseFromString(protobuf_content)
|
|
491
|
-
|
|
517
|
+
t = numpy_helper.to_array(tensor)
|
|
518
|
+
assert isinstance(t, np.ndarray)
|
|
519
|
+
target_list.append(t)
|
|
492
520
|
elif model_type_proto.HasField("optional_type"):
|
|
493
521
|
optional = onnx.OptionalProto()
|
|
494
522
|
optional.ParseFromString(protobuf_content)
|
onnx/checker.cc
CHANGED
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
#include <vector>
|
|
14
14
|
|
|
15
15
|
#include "onnx/common/file_utils.h"
|
|
16
|
-
#include "onnx/common/path.h"
|
|
17
16
|
#include "onnx/defs/schema.h"
|
|
18
17
|
#include "onnx/defs/tensor_proto_util.h"
|
|
19
18
|
#include "onnx/proto_utils.h"
|
|
@@ -39,13 +38,6 @@ namespace checker {
|
|
|
39
38
|
} \
|
|
40
39
|
} while (0)
|
|
41
40
|
|
|
42
|
-
#define enforce_has_repeated_field(proto, field) \
|
|
43
|
-
do { \
|
|
44
|
-
if (!proto.field##_size()) { \
|
|
45
|
-
fail_check("Repeated Field '", #field, "' of '", #proto, "' is required but missing."); \
|
|
46
|
-
} \
|
|
47
|
-
} while (0)
|
|
48
|
-
|
|
49
41
|
#define enforce_non_empty_field(proto, field) \
|
|
50
42
|
do { \
|
|
51
43
|
if (proto.field().empty()) { \
|
|
@@ -135,85 +127,7 @@ void check_tensor(const TensorProto& tensor, const CheckerContext& ctx) {
|
|
|
135
127
|
for (const StringStringEntryProto& entry : tensor.external_data()) {
|
|
136
128
|
if (entry.has_key() && entry.has_value() && entry.key() == "location") {
|
|
137
129
|
has_location = true;
|
|
138
|
-
|
|
139
|
-
auto file_path = std::filesystem::path(utf8str_to_wstring(entry.value()));
|
|
140
|
-
if (file_path.is_absolute()) {
|
|
141
|
-
fail_check(
|
|
142
|
-
"Location of external TensorProto ( tensor name: ",
|
|
143
|
-
tensor.name(),
|
|
144
|
-
") should be a relative path, but it is an absolute path: ",
|
|
145
|
-
entry.value());
|
|
146
|
-
}
|
|
147
|
-
auto relative_path = file_path.lexically_normal().make_preferred().wstring();
|
|
148
|
-
// Check that normalized relative path contains ".." on Windows.
|
|
149
|
-
if (relative_path.find(L"..", 0) != std::string::npos) {
|
|
150
|
-
fail_check(
|
|
151
|
-
"Data of TensorProto ( tensor name: ",
|
|
152
|
-
tensor.name(),
|
|
153
|
-
") should be file inside the ",
|
|
154
|
-
ctx.get_model_dir(),
|
|
155
|
-
", but the '",
|
|
156
|
-
entry.value(),
|
|
157
|
-
"' points outside the directory");
|
|
158
|
-
}
|
|
159
|
-
std::wstring data_path = path_join(utf8str_to_wstring(ctx.get_model_dir()), relative_path);
|
|
160
|
-
struct _stat64 buff;
|
|
161
|
-
if (_wstat64(data_path.c_str(), &buff) != 0) {
|
|
162
|
-
fail_check(
|
|
163
|
-
"Data of TensorProto ( tensor name: ",
|
|
164
|
-
tensor.name(),
|
|
165
|
-
") should be stored in ",
|
|
166
|
-
entry.value(),
|
|
167
|
-
", but it doesn't exist or is not accessible.");
|
|
168
|
-
}
|
|
169
|
-
#else // POSIX
|
|
170
|
-
if (entry.value().empty()) {
|
|
171
|
-
fail_check("Location of external TensorProto ( tensor name: ", tensor.name(), ") should not be empty.");
|
|
172
|
-
} else if (entry.value()[0] == '/') {
|
|
173
|
-
fail_check(
|
|
174
|
-
"Location of external TensorProto ( tensor name: ",
|
|
175
|
-
tensor.name(),
|
|
176
|
-
") should be a relative path, but it is an absolute path: ",
|
|
177
|
-
entry.value());
|
|
178
|
-
}
|
|
179
|
-
std::string relative_path = clean_relative_path(entry.value());
|
|
180
|
-
// Check that normalized relative path contains ".." on POSIX
|
|
181
|
-
if (relative_path.find("..", 0) != std::string::npos) {
|
|
182
|
-
fail_check(
|
|
183
|
-
"Data of TensorProto ( tensor name: ",
|
|
184
|
-
tensor.name(),
|
|
185
|
-
") should be file inside the ",
|
|
186
|
-
ctx.get_model_dir(),
|
|
187
|
-
", but the '",
|
|
188
|
-
entry.value(),
|
|
189
|
-
"' points outside the directory");
|
|
190
|
-
}
|
|
191
|
-
std::string data_path = path_join(ctx.get_model_dir(), relative_path);
|
|
192
|
-
// use stat64 to check whether the file exists
|
|
193
|
-
#if defined(__APPLE__) || defined(__wasm__) || !defined(__GLIBC__)
|
|
194
|
-
struct stat buffer; // APPLE, wasm and non-glic stdlibs do not have stat64
|
|
195
|
-
if (stat((data_path).c_str(), &buffer) != 0) {
|
|
196
|
-
#else
|
|
197
|
-
struct stat64 buffer; // All POSIX under glibc except APPLE and wasm have stat64
|
|
198
|
-
if (stat64((data_path).c_str(), &buffer) != 0) {
|
|
199
|
-
#endif
|
|
200
|
-
fail_check(
|
|
201
|
-
"Data of TensorProto ( tensor name: ",
|
|
202
|
-
tensor.name(),
|
|
203
|
-
") should be stored in ",
|
|
204
|
-
data_path,
|
|
205
|
-
", but it doesn't exist or is not accessible.");
|
|
206
|
-
}
|
|
207
|
-
// Do not allow symlinks or directories.
|
|
208
|
-
if (!S_ISREG(buffer.st_mode)) {
|
|
209
|
-
fail_check(
|
|
210
|
-
"Data of TensorProto ( tensor name: ",
|
|
211
|
-
tensor.name(),
|
|
212
|
-
") should be stored in ",
|
|
213
|
-
data_path,
|
|
214
|
-
", but it is not regular file.");
|
|
215
|
-
}
|
|
216
|
-
#endif
|
|
130
|
+
resolve_external_data_location(ctx.get_model_dir(), entry.value(), tensor.name());
|
|
217
131
|
}
|
|
218
132
|
}
|
|
219
133
|
if (!has_location) {
|
|
@@ -272,6 +186,8 @@ void check_tensor(const TensorProto& tensor, const CheckerContext& ctx) {
|
|
|
272
186
|
case TensorProto::FLOAT8E4M3FNUZ:
|
|
273
187
|
case TensorProto::FLOAT8E5M2:
|
|
274
188
|
case TensorProto::FLOAT8E5M2FNUZ:
|
|
189
|
+
case TensorProto::UINT4:
|
|
190
|
+
case TensorProto::INT4:
|
|
275
191
|
check_field(int32_data);
|
|
276
192
|
break;
|
|
277
193
|
|
|
@@ -656,17 +572,11 @@ void check_node(const NodeProto& node, const CheckerContext& ctx, const LexicalS
|
|
|
656
572
|
const auto* schema = ctx.get_schema_registry()->GetSchema(node.op_type(), domain_version, node.domain());
|
|
657
573
|
if (!schema) {
|
|
658
574
|
if (node.domain() == ONNX_DOMAIN || node.domain() == AI_ONNX_ML_DOMAIN || node.domain() == "ai.onnx" ||
|
|
659
|
-
node.domain() == AI_ONNX_TRAINING_DOMAIN) {
|
|
660
|
-
// fail the checker if op in built-in domains has no schema
|
|
575
|
+
node.domain() == AI_ONNX_TRAINING_DOMAIN || ctx.check_custom_domain()) {
|
|
576
|
+
// fail the checker if op is in built-in domains or if it has no schema when `check_custom_domain` is true
|
|
661
577
|
fail_check(
|
|
662
578
|
"No Op registered for " + node.op_type() + " with domain_version of " +
|
|
663
579
|
ONNX_NAMESPACE::to_string(domain_version));
|
|
664
|
-
} else {
|
|
665
|
-
// TODO: expose the registration of the op schemas appropriately in
|
|
666
|
-
// python, so we can load and register operators in other domains
|
|
667
|
-
//
|
|
668
|
-
// before we complete the above todo, let's skip the schema check for
|
|
669
|
-
// now
|
|
670
580
|
}
|
|
671
581
|
} else if (schema->Deprecated()) {
|
|
672
582
|
fail_check(
|
|
@@ -1021,7 +931,11 @@ void check_model(const ModelProto& model, CheckerContext& ctx) {
|
|
|
1021
931
|
}
|
|
1022
932
|
}
|
|
1023
933
|
|
|
1024
|
-
void check_model(
|
|
934
|
+
void check_model(
|
|
935
|
+
const std::string& model_path,
|
|
936
|
+
bool full_check,
|
|
937
|
+
bool skip_opset_compatibility_check,
|
|
938
|
+
bool check_custom_domain) {
|
|
1025
939
|
ModelProto model;
|
|
1026
940
|
LoadProtoFromPath(model_path, model);
|
|
1027
941
|
|
|
@@ -1033,6 +947,7 @@ void check_model(const std::string& model_path, bool full_check, bool skip_opset
|
|
|
1033
947
|
}
|
|
1034
948
|
ctx.set_model_dir(model_dir);
|
|
1035
949
|
ctx.set_skip_opset_compatibility_check(skip_opset_compatibility_check);
|
|
950
|
+
ctx.set_check_custom_domain(check_custom_domain);
|
|
1036
951
|
check_model(model, ctx);
|
|
1037
952
|
|
|
1038
953
|
if (full_check) {
|
|
@@ -1041,9 +956,14 @@ void check_model(const std::string& model_path, bool full_check, bool skip_opset
|
|
|
1041
956
|
}
|
|
1042
957
|
}
|
|
1043
958
|
|
|
1044
|
-
void check_model(
|
|
959
|
+
void check_model(
|
|
960
|
+
const ModelProto& model,
|
|
961
|
+
bool full_check,
|
|
962
|
+
bool skip_opset_compatibility_check,
|
|
963
|
+
bool check_custom_domain) {
|
|
1045
964
|
CheckerContext ctx;
|
|
1046
965
|
ctx.set_skip_opset_compatibility_check(skip_opset_compatibility_check);
|
|
966
|
+
ctx.set_check_custom_domain(check_custom_domain);
|
|
1047
967
|
check_model(model, ctx);
|
|
1048
968
|
if (full_check) {
|
|
1049
969
|
ShapeInferenceOptions options{true, 1, false};
|
|
@@ -1054,6 +974,93 @@ void check_model(const ModelProto& model, bool full_check, bool skip_opset_compa
|
|
|
1054
974
|
}
|
|
1055
975
|
}
|
|
1056
976
|
|
|
977
|
+
std::string resolve_external_data_location(
|
|
978
|
+
const std::string& base_dir,
|
|
979
|
+
const std::string& location,
|
|
980
|
+
const std::string& tensor_name) {
|
|
981
|
+
#ifdef _WIN32
|
|
982
|
+
auto file_path = std::filesystem::path(utf8str_to_wstring(location));
|
|
983
|
+
if (file_path.is_absolute()) {
|
|
984
|
+
fail_check(
|
|
985
|
+
"Location of external TensorProto ( tensor name: ",
|
|
986
|
+
tensor_name,
|
|
987
|
+
") should be a relative path, but it is an absolute path: ",
|
|
988
|
+
location);
|
|
989
|
+
}
|
|
990
|
+
auto relative_path = file_path.lexically_normal().make_preferred().wstring();
|
|
991
|
+
// Check that normalized relative path contains ".." on Windows.
|
|
992
|
+
if (relative_path.find(L"..", 0) != std::string::npos) {
|
|
993
|
+
fail_check(
|
|
994
|
+
"Data of TensorProto ( tensor name: ",
|
|
995
|
+
tensor_name,
|
|
996
|
+
") should be file inside the ",
|
|
997
|
+
base_dir,
|
|
998
|
+
", but the '",
|
|
999
|
+
location,
|
|
1000
|
+
"' points outside the directory");
|
|
1001
|
+
}
|
|
1002
|
+
std::wstring data_path = path_join(utf8str_to_wstring(base_dir), relative_path);
|
|
1003
|
+
struct _stat64 buff;
|
|
1004
|
+
if (data_path.empty() || (data_path[0] != '#' && _wstat64(data_path.c_str(), &buff) != 0)) {
|
|
1005
|
+
fail_check(
|
|
1006
|
+
"Data of TensorProto ( tensor name: ",
|
|
1007
|
+
tensor_name,
|
|
1008
|
+
") should be stored in ",
|
|
1009
|
+
location,
|
|
1010
|
+
", but it doesn't exist or is not accessible.");
|
|
1011
|
+
}
|
|
1012
|
+
return wstring_to_utf8str(data_path);
|
|
1013
|
+
#else // POSIX
|
|
1014
|
+
if (location.empty()) {
|
|
1015
|
+
fail_check("Location of external TensorProto ( tensor name: ", tensor_name, ") should not be empty.");
|
|
1016
|
+
} else if (location[0] == '/') {
|
|
1017
|
+
fail_check(
|
|
1018
|
+
"Location of external TensorProto ( tensor name: ",
|
|
1019
|
+
tensor_name,
|
|
1020
|
+
") should be a relative path, but it is an absolute path: ",
|
|
1021
|
+
location);
|
|
1022
|
+
}
|
|
1023
|
+
std::string relative_path = clean_relative_path(location);
|
|
1024
|
+
// Check that normalized relative path contains ".." on POSIX
|
|
1025
|
+
if (relative_path.find("..", 0) != std::string::npos) {
|
|
1026
|
+
fail_check(
|
|
1027
|
+
"Data of TensorProto ( tensor name: ",
|
|
1028
|
+
tensor_name,
|
|
1029
|
+
") should be file inside the ",
|
|
1030
|
+
base_dir,
|
|
1031
|
+
", but the '",
|
|
1032
|
+
location,
|
|
1033
|
+
"' points outside the directory");
|
|
1034
|
+
}
|
|
1035
|
+
std::string data_path = path_join(base_dir, relative_path);
|
|
1036
|
+
// use stat64 to check whether the file exists
|
|
1037
|
+
#if defined(__APPLE__) || defined(__wasm__) || !defined(__GLIBC__)
|
|
1038
|
+
struct stat buffer; // APPLE, wasm and non-glic stdlibs do not have stat64
|
|
1039
|
+
if (data_path.empty() || (data_path[0] != '#' && stat((data_path).c_str(), &buffer) != 0)) {
|
|
1040
|
+
#else
|
|
1041
|
+
struct stat64 buffer; // All POSIX under glibc except APPLE and wasm have stat64
|
|
1042
|
+
if (data_path.empty() || (data_path[0] != '#' && stat64((data_path).c_str(), &buffer) != 0)) {
|
|
1043
|
+
#endif
|
|
1044
|
+
fail_check(
|
|
1045
|
+
"Data of TensorProto ( tensor name: ",
|
|
1046
|
+
tensor_name,
|
|
1047
|
+
") should be stored in ",
|
|
1048
|
+
data_path,
|
|
1049
|
+
", but it doesn't exist or is not accessible.");
|
|
1050
|
+
}
|
|
1051
|
+
// Do not allow symlinks or directories.
|
|
1052
|
+
if (data_path.empty() || (data_path[0] != '#' && !S_ISREG(buffer.st_mode))) {
|
|
1053
|
+
fail_check(
|
|
1054
|
+
"Data of TensorProto ( tensor name: ",
|
|
1055
|
+
tensor_name,
|
|
1056
|
+
") should be stored in ",
|
|
1057
|
+
data_path,
|
|
1058
|
+
", but it is not regular file.");
|
|
1059
|
+
}
|
|
1060
|
+
return data_path;
|
|
1061
|
+
#endif
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1057
1064
|
std::set<std::string> experimental_ops = {
|
|
1058
1065
|
"ATen",
|
|
1059
1066
|
"Affine",
|
|
@@ -1071,9 +1078,7 @@ bool check_is_experimental_op(const NodeProto& node) {
|
|
|
1071
1078
|
return (node.domain() == ONNX_DOMAIN || node.domain() == "ai.onnx") && experimental_ops.count(node.op_type());
|
|
1072
1079
|
}
|
|
1073
1080
|
|
|
1074
|
-
#undef fail_check
|
|
1075
1081
|
#undef enforce_has_field
|
|
1076
|
-
#undef enforce_has_repeated_field
|
|
1077
1082
|
#undef enforce_non_empty_field
|
|
1078
1083
|
|
|
1079
1084
|
} // namespace checker
|
onnx/checker.h
CHANGED
|
@@ -84,6 +84,14 @@ class CheckerContext final {
|
|
|
84
84
|
skip_opset_compatibility_check_ = value;
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
bool check_custom_domain() const {
|
|
88
|
+
return check_custom_domain_;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void set_check_custom_domain(bool value) {
|
|
92
|
+
check_custom_domain_ = value;
|
|
93
|
+
}
|
|
94
|
+
|
|
87
95
|
explicit CheckerContext() : ir_version_(-1) {}
|
|
88
96
|
|
|
89
97
|
private:
|
|
@@ -93,6 +101,7 @@ class CheckerContext final {
|
|
|
93
101
|
const ISchemaRegistry* schema_registry_ = OpSchemaRegistry::Instance();
|
|
94
102
|
std::string model_dir_;
|
|
95
103
|
bool skip_opset_compatibility_check_ = false;
|
|
104
|
+
bool check_custom_domain_ = false;
|
|
96
105
|
};
|
|
97
106
|
|
|
98
107
|
class LexicalScopeContext final {
|
|
@@ -158,9 +167,20 @@ void check_model_local_functions(
|
|
|
158
167
|
const CheckerContext& ctx,
|
|
159
168
|
const LexicalScopeContext& parent_lex);
|
|
160
169
|
|
|
161
|
-
void check_model(
|
|
162
|
-
|
|
163
|
-
|
|
170
|
+
void check_model(
|
|
171
|
+
const ModelProto& model,
|
|
172
|
+
bool full_check = false,
|
|
173
|
+
bool skip_opset_compatibility_check = false,
|
|
174
|
+
bool check_custom_domain = false);
|
|
175
|
+
void check_model(
|
|
176
|
+
const std::string& model_path,
|
|
177
|
+
bool full_check = false,
|
|
178
|
+
bool skip_opset_compatibility_check = false,
|
|
179
|
+
bool check_custom_domain = false);
|
|
180
|
+
std::string resolve_external_data_location(
|
|
181
|
+
const std::string& base_dir,
|
|
182
|
+
const std::string& location,
|
|
183
|
+
const std::string& tensor_name);
|
|
164
184
|
bool check_is_experimental_op(const NodeProto& node);
|
|
165
185
|
|
|
166
186
|
} // namespace checker
|
onnx/checker.py
CHANGED
|
@@ -15,6 +15,7 @@ __all__ = [
|
|
|
15
15
|
"check_tensor",
|
|
16
16
|
"check_value_info",
|
|
17
17
|
"DEFAULT_CONTEXT",
|
|
18
|
+
"LEXICAL_SCOPE_CONTEXT",
|
|
18
19
|
"ValidationError",
|
|
19
20
|
"C",
|
|
20
21
|
"MAXIMUM_PROTOBUF",
|
|
@@ -39,7 +40,6 @@ from onnx import (
|
|
|
39
40
|
SparseTensorProto,
|
|
40
41
|
TensorProto,
|
|
41
42
|
ValueInfoProto,
|
|
42
|
-
helper,
|
|
43
43
|
)
|
|
44
44
|
|
|
45
45
|
# Limitation of single protobuf file is 2GB
|
|
@@ -56,6 +56,8 @@ DEFAULT_CONTEXT.ir_version = IR_VERSION
|
|
|
56
56
|
# TODO: Maybe ONNX-ML should also be defaulted?
|
|
57
57
|
DEFAULT_CONTEXT.opset_imports = {"": onnx.defs.onnx_opset_version()}
|
|
58
58
|
|
|
59
|
+
LEXICAL_SCOPE_CONTEXT = C.LexicalScopeContext()
|
|
60
|
+
|
|
59
61
|
|
|
60
62
|
FuncType = TypeVar("FuncType", bound=Callable[..., Any])
|
|
61
63
|
|
|
@@ -80,36 +82,48 @@ def check_tensor(tensor: TensorProto, ctx: C.CheckerContext = DEFAULT_CONTEXT) -
|
|
|
80
82
|
|
|
81
83
|
|
|
82
84
|
def check_attribute(
|
|
83
|
-
attr: AttributeProto,
|
|
85
|
+
attr: AttributeProto,
|
|
86
|
+
ctx: C.CheckerContext = DEFAULT_CONTEXT,
|
|
87
|
+
lexical_scope_ctx: C.LexicalScopeContext = LEXICAL_SCOPE_CONTEXT,
|
|
84
88
|
) -> None:
|
|
85
89
|
_ensure_proto_type(attr, AttributeProto)
|
|
86
|
-
return C.check_attribute(attr.SerializeToString(), ctx)
|
|
90
|
+
return C.check_attribute(attr.SerializeToString(), ctx, lexical_scope_ctx)
|
|
87
91
|
|
|
88
92
|
|
|
89
|
-
def check_node(
|
|
93
|
+
def check_node(
|
|
94
|
+
node: NodeProto,
|
|
95
|
+
ctx: C.CheckerContext = DEFAULT_CONTEXT,
|
|
96
|
+
lexical_scope_ctx: C.LexicalScopeContext = LEXICAL_SCOPE_CONTEXT,
|
|
97
|
+
) -> None:
|
|
90
98
|
_ensure_proto_type(node, NodeProto)
|
|
91
|
-
return C.check_node(node.SerializeToString(), ctx)
|
|
99
|
+
return C.check_node(node.SerializeToString(), ctx, lexical_scope_ctx)
|
|
92
100
|
|
|
93
101
|
|
|
94
102
|
def check_function(
|
|
95
|
-
function: FunctionProto,
|
|
103
|
+
function: FunctionProto,
|
|
104
|
+
ctx: C.CheckerContext | None = None,
|
|
105
|
+
lexical_scope_ctx: C.LexicalScopeContext = LEXICAL_SCOPE_CONTEXT,
|
|
96
106
|
) -> None:
|
|
97
107
|
_ensure_proto_type(function, FunctionProto)
|
|
98
108
|
if ctx is None:
|
|
99
109
|
ctx = C.CheckerContext()
|
|
100
|
-
ctx.ir_version = helper.find_min_ir_version_for(
|
|
101
|
-
|
|
110
|
+
ctx.ir_version = onnx.helper.find_min_ir_version_for(
|
|
111
|
+
function.opset_import, ignore_unknown=True
|
|
102
112
|
)
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
C.check_function(function.SerializeToString(), ctx)
|
|
113
|
+
ctx.opset_imports = {
|
|
114
|
+
domain_version.domain: domain_version.version
|
|
115
|
+
for domain_version in function.opset_import
|
|
116
|
+
}
|
|
117
|
+
C.check_function(function.SerializeToString(), ctx, lexical_scope_ctx)
|
|
108
118
|
|
|
109
119
|
|
|
110
|
-
def check_graph(
|
|
120
|
+
def check_graph(
|
|
121
|
+
graph: GraphProto,
|
|
122
|
+
ctx: C.CheckerContext = DEFAULT_CONTEXT,
|
|
123
|
+
lexical_scope_ctx: C.LexicalScopeContext = LEXICAL_SCOPE_CONTEXT,
|
|
124
|
+
) -> None:
|
|
111
125
|
_ensure_proto_type(graph, GraphProto)
|
|
112
|
-
return C.check_graph(graph.SerializeToString(), ctx)
|
|
126
|
+
return C.check_graph(graph.SerializeToString(), ctx, lexical_scope_ctx)
|
|
113
127
|
|
|
114
128
|
|
|
115
129
|
def check_sparse_tensor(
|
|
@@ -123,18 +137,35 @@ def check_model(
|
|
|
123
137
|
model: ModelProto | str | bytes | os.PathLike,
|
|
124
138
|
full_check: bool = False,
|
|
125
139
|
skip_opset_compatibility_check: bool = False,
|
|
140
|
+
check_custom_domain: bool = False,
|
|
126
141
|
) -> None:
|
|
127
|
-
"""Check the consistency of a model.
|
|
142
|
+
"""Check the consistency of a model.
|
|
143
|
+
|
|
144
|
+
An exception will be raised if the model's ir_version is not set
|
|
145
|
+
properly or is higher than checker's ir_version, or if the model
|
|
146
|
+
has duplicate keys in metadata_props.
|
|
147
|
+
|
|
148
|
+
If IR version >= 3, the model must specify opset_import.
|
|
149
|
+
If IR version < 3, the model cannot have any opset_import specified.
|
|
128
150
|
|
|
129
151
|
Args:
|
|
130
|
-
model: Model to check.
|
|
131
|
-
|
|
152
|
+
model: Model to check. If model is a path, the function checks model
|
|
153
|
+
path first. If the model bytes size is larger than 2GB, function
|
|
154
|
+
should be called using model path.
|
|
155
|
+
full_check: If True, the function also runs shape inference check.
|
|
132
156
|
skip_opset_compatibility_check: If True, the function skips the check for
|
|
133
157
|
opset compatibility.
|
|
158
|
+
check_custom_domain: If True, the function will check all domains. Otherwise
|
|
159
|
+
only check built-in domains.
|
|
134
160
|
"""
|
|
135
161
|
# If model is a path instead of ModelProto
|
|
136
162
|
if isinstance(model, (str, os.PathLike)):
|
|
137
|
-
C.check_model_path(
|
|
163
|
+
C.check_model_path(
|
|
164
|
+
os.fspath(model),
|
|
165
|
+
full_check,
|
|
166
|
+
skip_opset_compatibility_check,
|
|
167
|
+
check_custom_domain,
|
|
168
|
+
)
|
|
138
169
|
else:
|
|
139
170
|
protobuf_string = (
|
|
140
171
|
model if isinstance(model, bytes) else model.SerializeToString()
|
|
@@ -145,7 +176,12 @@ def check_model(
|
|
|
145
176
|
raise ValueError(
|
|
146
177
|
"This protobuf of onnx model is too large (>2GB). Call check_model with model path instead."
|
|
147
178
|
)
|
|
148
|
-
C.check_model(
|
|
179
|
+
C.check_model(
|
|
180
|
+
protobuf_string,
|
|
181
|
+
full_check,
|
|
182
|
+
skip_opset_compatibility_check,
|
|
183
|
+
check_custom_domain,
|
|
184
|
+
)
|
|
149
185
|
|
|
150
186
|
|
|
151
187
|
ValidationError = C.ValidationError
|
onnx/common/assertions.cc
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
#include "onnx/common/assertions.h"
|
|
11
11
|
|
|
12
|
+
#include <array>
|
|
12
13
|
#include <cstdarg>
|
|
13
14
|
#include <cstdio>
|
|
14
15
|
|
|
@@ -17,16 +18,20 @@
|
|
|
17
18
|
namespace ONNX_NAMESPACE {
|
|
18
19
|
|
|
19
20
|
std::string barf(const char* fmt, ...) {
|
|
20
|
-
|
|
21
|
+
constexpr size_t buffer_size = 2048;
|
|
22
|
+
std::array<char, buffer_size> msg{};
|
|
21
23
|
va_list args;
|
|
22
24
|
|
|
23
25
|
va_start(args, fmt);
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
vsnprintf(msg,
|
|
26
|
+
|
|
27
|
+
// use fixed length for buffer "msg" to avoid buffer overflow
|
|
28
|
+
vsnprintf(static_cast<char*>(msg.data()), msg.size() - 1, fmt, args);
|
|
29
|
+
|
|
30
|
+
// ensure null-terminated string to avoid out of bounds read
|
|
31
|
+
msg.back() = '\0';
|
|
27
32
|
va_end(args);
|
|
28
33
|
|
|
29
|
-
return std::string(msg);
|
|
34
|
+
return std::string(msg.data());
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
void throw_assert_error(std::string& msg) {
|
onnx/common/common.h
CHANGED
|
@@ -34,3 +34,22 @@
|
|
|
34
34
|
#define ONNX_CATCH(x) catch (x)
|
|
35
35
|
#define ONNX_HANDLE_EXCEPTION(func) func()
|
|
36
36
|
#endif
|
|
37
|
+
|
|
38
|
+
// Macros to disable the copy and/or assignment methods
|
|
39
|
+
// These are usually placed in the private: declarations for a class.
|
|
40
|
+
|
|
41
|
+
#define ONNX_DISALLOW_COPY(TypeName) TypeName(const TypeName&) = delete
|
|
42
|
+
|
|
43
|
+
#define ONNX_DISALLOW_ASSIGNMENT(TypeName) TypeName& operator=(const TypeName&) = delete
|
|
44
|
+
|
|
45
|
+
#define ONNX_DISALLOW_COPY_AND_ASSIGNMENT(TypeName) \
|
|
46
|
+
ONNX_DISALLOW_COPY(TypeName); \
|
|
47
|
+
ONNX_DISALLOW_ASSIGNMENT(TypeName)
|
|
48
|
+
|
|
49
|
+
#define ONNX_DISALLOW_MOVE(TypeName) \
|
|
50
|
+
TypeName(TypeName&&) = delete; \
|
|
51
|
+
TypeName& operator=(TypeName&&) = delete
|
|
52
|
+
|
|
53
|
+
#define ONNX_DISALLOW_COPY_ASSIGNMENT_AND_MOVE(TypeName) \
|
|
54
|
+
ONNX_DISALLOW_COPY_AND_ASSIGNMENT(TypeName); \
|
|
55
|
+
ONNX_DISALLOW_MOVE(TypeName)
|
onnx/common/file_utils.h
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
#pragma once
|
|
8
8
|
|
|
9
|
+
#include <filesystem>
|
|
9
10
|
#include <fstream>
|
|
10
11
|
#include <string>
|
|
11
12
|
|
|
@@ -16,7 +17,8 @@ namespace ONNX_NAMESPACE {
|
|
|
16
17
|
|
|
17
18
|
template <typename T>
|
|
18
19
|
void LoadProtoFromPath(const std::string proto_path, T& proto) {
|
|
19
|
-
std::
|
|
20
|
+
std::filesystem::path proto_u8_path = std::filesystem::u8path(proto_path);
|
|
21
|
+
std::fstream proto_stream(proto_u8_path, std::ios::in | std::ios::binary);
|
|
20
22
|
if (!proto_stream.good()) {
|
|
21
23
|
fail_check("Unable to open proto file: ", proto_path, ". Please check if it is a valid proto. ");
|
|
22
24
|
}
|
onnx/common/interned_strings.h
CHANGED
|
@@ -185,7 +185,13 @@ namespace ONNX_NAMESPACE {
|
|
|
185
185
|
_(ScatterElements) \
|
|
186
186
|
_(Resize) \
|
|
187
187
|
_(ceil_mode) \
|
|
188
|
-
_(num_outputs)
|
|
188
|
+
_(num_outputs) \
|
|
189
|
+
_(start) \
|
|
190
|
+
_(end) \
|
|
191
|
+
_(num_groups) \
|
|
192
|
+
_(stash_type) \
|
|
193
|
+
_(block_size) \
|
|
194
|
+
_(output_dtype)
|
|
189
195
|
|
|
190
196
|
enum BuiltinSymbol {
|
|
191
197
|
#define DEFINE_SYMBOL(s) k##s,
|