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.

Files changed (584) hide show
  1. onnx/__init__.py +10 -10
  2. onnx/backend/base.py +13 -14
  3. onnx/backend/sample/ops/abs.py +1 -1
  4. onnx/backend/test/case/model/__init__.py +0 -1
  5. onnx/backend/test/case/node/ai_onnx_ml/tree_ensemble.py +122 -0
  6. onnx/backend/test/case/node/averagepool.py +15 -30
  7. onnx/backend/test/case/node/cast.py +88 -11
  8. onnx/backend/test/case/node/dequantizelinear.py +155 -0
  9. onnx/backend/test/case/node/groupnormalization.py +13 -9
  10. onnx/backend/test/case/node/gru.py +2 -2
  11. onnx/backend/test/case/node/isinf.py +4 -4
  12. onnx/backend/test/case/node/isnan.py +2 -2
  13. onnx/backend/test/case/node/lppool.py +8 -16
  14. onnx/backend/test/case/node/lstm.py +1 -1
  15. onnx/backend/test/case/node/maxpool.py +40 -34
  16. onnx/backend/test/case/node/pow.py +1 -1
  17. onnx/backend/test/case/node/qlinearmatmul.py +143 -109
  18. onnx/backend/test/case/node/quantizelinear.py +298 -7
  19. onnx/backend/test/case/node/reducemax.py +26 -0
  20. onnx/backend/test/case/node/rnn.py +1 -1
  21. onnx/backend/test/case/node/scan.py +6 -2
  22. onnx/backend/test/case/node/scatterelements.py +1 -1
  23. onnx/backend/test/case/node/topk.py +1 -1
  24. onnx/backend/test/case/utils.py +1 -3
  25. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/model.onnx +0 -0
  26. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/input_0.pb +0 -0
  27. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/output_0.pb +0 -0
  28. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/model.onnx +0 -0
  29. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/input_0.pb +1 -0
  30. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/output_0.pb +0 -0
  31. onnx/backend/test/data/node/test_cast_BFLOAT16_to_FLOAT/model.onnx +0 -0
  32. onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT/model.onnx +0 -0
  33. onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT16/model.onnx +0 -0
  34. onnx/backend/test/data/node/test_cast_FLOAT16_to_DOUBLE/model.onnx +0 -0
  35. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT/model.onnx +0 -0
  36. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
  37. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
  38. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  39. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  40. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
  41. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  42. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
  43. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
  44. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  45. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  46. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
  47. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  48. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/model.onnx +0 -0
  49. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/input_0.pb +0 -0
  50. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/output_0.pb +1 -0
  51. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/model.onnx +0 -0
  52. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/input_0.pb +0 -0
  53. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/output_0.pb +0 -0
  54. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
  55. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  56. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  57. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/model.onnx +0 -0
  58. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  59. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  60. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
  61. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  62. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  63. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/model.onnx +0 -0
  64. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  65. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  66. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
  67. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  68. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  69. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/model.onnx +0 -0
  70. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  71. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  72. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
  73. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  74. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  75. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/model.onnx +0 -0
  76. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  77. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  78. onnx/backend/test/data/node/test_cast_FLOAT_to_BFLOAT16/model.onnx +0 -0
  79. onnx/backend/test/data/node/test_cast_FLOAT_to_DOUBLE/model.onnx +0 -0
  80. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT16/model.onnx +0 -0
  81. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  82. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
  83. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  84. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  85. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
  86. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  87. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  88. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
  89. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  90. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  91. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
  92. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  93. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/model.onnx +0 -0
  94. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/input_0.pb +0 -0
  95. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/output_0.pb +1 -0
  96. onnx/backend/test/data/node/test_cast_FLOAT_to_STRING/model.onnx +0 -0
  97. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/model.onnx +0 -0
  98. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/input_0.pb +0 -0
  99. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/output_0.pb +0 -0
  100. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/model.onnx +0 -0
  101. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/input_0.pb +1 -0
  102. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  103. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/model.onnx +0 -0
  104. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/input_0.pb +1 -0
  105. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  106. onnx/backend/test/data/node/test_cast_INT4_to_INT8/model.onnx +0 -0
  107. onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/input_0.pb +1 -0
  108. onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/output_0.pb +0 -0
  109. onnx/backend/test/data/node/test_cast_STRING_to_FLOAT/model.onnx +0 -0
  110. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/model.onnx +0 -0
  111. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  112. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  113. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/model.onnx +0 -0
  114. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  115. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  116. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/model.onnx +0 -0
  117. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/input_0.pb +0 -0
  118. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/output_0.pb +0 -0
  119. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
  120. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
  121. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  122. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  123. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
  124. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  125. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
  126. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
  127. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  128. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  129. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
  130. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  131. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  132. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
  133. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  134. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  135. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
  136. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  137. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  138. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
  139. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  140. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  141. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
  142. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  143. onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT/model.onnx +0 -0
  144. onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT_expanded/model.onnx +0 -0
  145. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT/model.onnx +0 -0
  146. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16/model.onnx +0 -0
  147. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16_expanded/model.onnx +0 -0
  148. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT_expanded/model.onnx +0 -0
  149. onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE/model.onnx +0 -0
  150. onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE_expanded/model.onnx +0 -0
  151. onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT/model.onnx +0 -0
  152. onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT_expanded/model.onnx +0 -0
  153. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
  154. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT_expanded/model.onnx +0 -0
  155. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
  156. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT_expanded/model.onnx +0 -0
  157. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
  158. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT_expanded/model.onnx +0 -0
  159. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
  160. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT_expanded/model.onnx +0 -0
  161. onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16/model.onnx +0 -0
  162. onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16_expanded/model.onnx +0 -0
  163. onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE/model.onnx +0 -0
  164. onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE_expanded/model.onnx +0 -0
  165. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16/model.onnx +0 -0
  166. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16_expanded/model.onnx +0 -0
  167. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  168. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  169. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ_expanded/model.onnx +0 -0
  170. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN_expanded/model.onnx +0 -0
  171. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  172. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  173. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ_expanded/model.onnx +0 -0
  174. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2_expanded/model.onnx +0 -0
  175. onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING/model.onnx +0 -0
  176. onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING_expanded/model.onnx +0 -0
  177. onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT/model.onnx +0 -0
  178. onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT_expanded/model.onnx +0 -0
  179. onnx/backend/test/data/node/test_constant/model.onnx +0 -0
  180. onnx/backend/test/data/node/test_constant_pad/model.onnx +0 -0
  181. onnx/backend/test/data/node/test_constant_pad_axes/model.onnx +0 -0
  182. onnx/backend/test/data/node/test_constant_pad_negative_axes/model.onnx +0 -0
  183. onnx/backend/test/data/node/test_constantofshape_float_ones/model.onnx +0 -0
  184. onnx/backend/test/data/node/test_constantofshape_int_shape_zero/model.onnx +0 -0
  185. onnx/backend/test/data/node/test_constantofshape_int_zeros/model.onnx +0 -0
  186. onnx/backend/test/data/node/test_dequantizelinear/model.onnx +0 -0
  187. onnx/backend/test/data/node/test_dequantizelinear_axis/model.onnx +0 -0
  188. onnx/backend/test/data/node/test_dequantizelinear_blocked/model.onnx +0 -0
  189. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_0.pb +1 -0
  190. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_1.pb +0 -0
  191. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_2.pb +0 -0
  192. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/output_0.pb +0 -0
  193. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn/model.onnx +0 -0
  194. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_float16/model.onnx +0 -0
  195. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_zero_point/model.onnx +0 -0
  196. onnx/backend/test/data/node/test_dequantizelinear_e5m2/model.onnx +0 -0
  197. onnx/backend/test/data/node/test_dequantizelinear_int16/model.onnx +0 -0
  198. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_0.pb +1 -0
  199. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_1.pb +0 -0
  200. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_2.pb +0 -0
  201. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/output_0.pb +0 -0
  202. onnx/backend/test/data/node/test_dequantizelinear_int4/model.onnx +0 -0
  203. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_0.pb +1 -0
  204. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_1.pb +0 -0
  205. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_2.pb +1 -0
  206. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/output_0.pb +0 -0
  207. onnx/backend/test/data/node/test_dequantizelinear_uint16/model.onnx +0 -0
  208. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
  209. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
  210. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
  211. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
  212. onnx/backend/test/data/node/test_dequantizelinear_uint4/model.onnx +0 -0
  213. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_0.pb +1 -0
  214. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
  215. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
  216. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
  217. onnx/backend/test/data/node/test_edge_pad/model.onnx +0 -0
  218. onnx/backend/test/data/node/test_flatten_axis0/model.onnx +0 -0
  219. onnx/backend/test/data/node/test_flatten_axis1/model.onnx +0 -0
  220. onnx/backend/test/data/node/test_flatten_axis2/model.onnx +0 -0
  221. onnx/backend/test/data/node/test_flatten_axis3/model.onnx +0 -0
  222. onnx/backend/test/data/node/test_flatten_default_axis/model.onnx +0 -0
  223. onnx/backend/test/data/node/test_flatten_negative_axis1/model.onnx +0 -0
  224. onnx/backend/test/data/node/test_flatten_negative_axis2/model.onnx +0 -0
  225. onnx/backend/test/data/node/test_flatten_negative_axis3/model.onnx +0 -0
  226. onnx/backend/test/data/node/test_flatten_negative_axis4/model.onnx +0 -0
  227. onnx/backend/test/data/node/test_group_normalization_epsilon/model.onnx +0 -0
  228. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_0.pb +1 -1
  229. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb +1 -1
  230. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb +1 -1
  231. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb +0 -0
  232. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/model.onnx +0 -0
  233. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_0.pb +1 -1
  234. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_1.pb +1 -1
  235. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_2.pb +1 -1
  236. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/output_0.pb +0 -0
  237. onnx/backend/test/data/node/test_group_normalization_example/model.onnx +0 -0
  238. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_1.pb +1 -1
  239. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_2.pb +1 -1
  240. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/output_0.pb +0 -0
  241. onnx/backend/test/data/node/test_group_normalization_example_expanded/model.onnx +0 -0
  242. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_1.pb +1 -1
  243. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_2.pb +1 -1
  244. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/output_0.pb +0 -0
  245. onnx/backend/test/data/node/test_identity/model.onnx +0 -0
  246. onnx/backend/test/data/node/test_identity_sequence/model.onnx +0 -0
  247. onnx/backend/test/data/node/test_lrn_default/test_data_set_0/output_0.pb +0 -0
  248. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/model.onnx +0 -0
  249. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/test_data_set_0/input_0.pb +0 -0
  250. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/test_data_set_0/output_0.pb +0 -0
  251. onnx/backend/test/data/node/test_mvn/test_data_set_0/output_0.pb +1 -1
  252. onnx/backend/test/data/node/test_mvn_expanded/test_data_set_0/output_0.pb +1 -1
  253. onnx/backend/test/data/node/test_mvn_expanded_ver18/test_data_set_0/output_0.pb +1 -1
  254. onnx/backend/test/data/node/test_pow/test_data_set_0/output_0.pb +0 -0
  255. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/model.onnx +0 -0
  256. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_0.pb +1 -0
  257. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_1.pb +2 -0
  258. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_2.pb +1 -0
  259. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_3.pb +0 -0
  260. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_4.pb +2 -0
  261. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_5.pb +1 -0
  262. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_6.pb +2 -0
  263. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_7.pb +1 -0
  264. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/output_0.pb +1 -0
  265. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/model.onnx +0 -0
  266. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_0.pb +1 -0
  267. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_2.pb +1 -0
  268. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_3.pb +0 -0
  269. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_5.pb +1 -0
  270. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_7.pb +1 -0
  271. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/output_0.pb +1 -0
  272. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/model.onnx +0 -0
  273. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_1.pb +2 -0
  274. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_4.pb +2 -0
  275. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_6.pb +2 -0
  276. onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float32}/model.onnx +0 -0
  277. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_0.pb +0 -0
  278. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_3.pb +0 -0
  279. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/output_0.pb +1 -0
  280. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/model.onnx +0 -0
  281. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_0.pb +1 -0
  282. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_1.pb +2 -0
  283. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_2.pb +1 -0
  284. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_3.pb +0 -0
  285. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_4.pb +2 -0
  286. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_5.pb +1 -0
  287. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_6.pb +2 -0
  288. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_7.pb +1 -0
  289. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/output_0.pb +1 -0
  290. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/model.onnx +0 -0
  291. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_0.pb +1 -0
  292. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_1.pb +1 -0
  293. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_2.pb +1 -0
  294. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_3.pb +0 -0
  295. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_4.pb +1 -0
  296. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_5.pb +1 -0
  297. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_6.pb +1 -0
  298. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_7.pb +1 -0
  299. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/output_0.pb +1 -0
  300. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/model.onnx +0 -0
  301. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_1.pb +2 -0
  302. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_2.pb +1 -0
  303. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_4.pb +2 -0
  304. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_5.pb +1 -0
  305. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_6.pb +2 -0
  306. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_7.pb +1 -0
  307. onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float32}/model.onnx +0 -0
  308. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_0.pb +0 -0
  309. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_1.pb +1 -0
  310. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_2.pb +1 -0
  311. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_3.pb +0 -0
  312. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_4.pb +1 -0
  313. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_5.pb +1 -0
  314. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_6.pb +1 -0
  315. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_7.pb +1 -0
  316. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/output_0.pb +1 -0
  317. onnx/backend/test/data/node/test_quantizelinear/model.onnx +0 -0
  318. onnx/backend/test/data/node/test_quantizelinear_axis/model.onnx +0 -0
  319. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/model.onnx +0 -0
  320. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_0.pb +0 -0
  321. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_1.pb +0 -0
  322. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_2.pb +0 -0
  323. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/output_0.pb +1 -0
  324. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/model.onnx +0 -0
  325. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_0.pb +0 -0
  326. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_1.pb +0 -0
  327. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/output_0.pb +0 -0
  328. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/model.onnx +0 -0
  329. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/input_2.pb +0 -0
  330. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/output_0.pb +0 -0
  331. onnx/backend/test/data/node/test_quantizelinear_e5m2/model.onnx +0 -0
  332. onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/input_2.pb +0 -0
  333. onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/output_0.pb +0 -0
  334. onnx/backend/test/data/node/test_quantizelinear_int16/model.onnx +0 -0
  335. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_0.pb +0 -0
  336. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_1.pb +0 -0
  337. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_2.pb +0 -0
  338. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/output_0.pb +0 -0
  339. onnx/backend/test/data/node/test_quantizelinear_int4/model.onnx +0 -0
  340. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_0.pb +0 -0
  341. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_1.pb +0 -0
  342. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_2.pb +1 -0
  343. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/output_0.pb +1 -0
  344. onnx/backend/test/data/node/test_quantizelinear_uint16/model.onnx +0 -0
  345. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
  346. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
  347. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
  348. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
  349. onnx/backend/test/data/node/test_quantizelinear_uint4/model.onnx +0 -0
  350. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_0.pb +0 -0
  351. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
  352. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
  353. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
  354. onnx/backend/test/data/node/test_reflect_pad/model.onnx +0 -0
  355. onnx/backend/test/data/node/test_reshape_allowzero_reordered/model.onnx +0 -0
  356. onnx/backend/test/data/node/test_reshape_extended_dims/model.onnx +0 -0
  357. onnx/backend/test/data/node/test_reshape_negative_dim/model.onnx +0 -0
  358. onnx/backend/test/data/node/test_reshape_negative_extended_dims/model.onnx +0 -0
  359. onnx/backend/test/data/node/test_reshape_one_dim/model.onnx +0 -0
  360. onnx/backend/test/data/node/test_reshape_reduced_dims/model.onnx +0 -0
  361. onnx/backend/test/data/node/test_reshape_reordered_all_dims/model.onnx +0 -0
  362. onnx/backend/test/data/node/test_reshape_reordered_last_dims/model.onnx +0 -0
  363. onnx/backend/test/data/node/test_reshape_zero_and_negative_dim/model.onnx +0 -0
  364. onnx/backend/test/data/node/test_reshape_zero_dim/model.onnx +0 -0
  365. onnx/backend/test/data/node/test_shape/model.onnx +0 -0
  366. onnx/backend/test/data/node/test_shape_clip_end/model.onnx +0 -0
  367. onnx/backend/test/data/node/test_shape_clip_start/model.onnx +0 -0
  368. onnx/backend/test/data/node/test_shape_end_1/model.onnx +0 -0
  369. onnx/backend/test/data/node/test_shape_end_negative_1/model.onnx +0 -0
  370. onnx/backend/test/data/node/test_shape_example/model.onnx +0 -0
  371. onnx/backend/test/data/node/test_shape_start_1/model.onnx +0 -0
  372. onnx/backend/test/data/node/test_shape_start_1_end_2/model.onnx +0 -0
  373. onnx/backend/test/data/node/test_shape_start_1_end_negative_1/model.onnx +0 -0
  374. onnx/backend/test/data/node/test_shape_start_negative_1/model.onnx +0 -0
  375. onnx/backend/test/data/node/test_size/model.onnx +0 -0
  376. onnx/backend/test/data/node/test_size_example/model.onnx +0 -0
  377. onnx/backend/test/data/node/test_squeeze/model.onnx +0 -0
  378. onnx/backend/test/data/node/test_squeeze_negative_axes/model.onnx +0 -0
  379. onnx/backend/test/data/node/test_transpose_all_permutations_0/model.onnx +0 -0
  380. onnx/backend/test/data/node/test_transpose_all_permutations_1/model.onnx +0 -0
  381. onnx/backend/test/data/node/test_transpose_all_permutations_2/model.onnx +0 -0
  382. onnx/backend/test/data/node/test_transpose_all_permutations_3/model.onnx +0 -0
  383. onnx/backend/test/data/node/test_transpose_all_permutations_4/model.onnx +0 -0
  384. onnx/backend/test/data/node/test_transpose_all_permutations_5/model.onnx +0 -0
  385. onnx/backend/test/data/node/test_transpose_default/model.onnx +0 -0
  386. onnx/backend/test/data/node/test_unsqueeze_axis_0/model.onnx +0 -0
  387. onnx/backend/test/data/node/test_unsqueeze_axis_1/model.onnx +0 -0
  388. onnx/backend/test/data/node/test_unsqueeze_axis_2/model.onnx +0 -0
  389. onnx/backend/test/data/node/test_unsqueeze_negative_axes/model.onnx +0 -0
  390. onnx/backend/test/data/node/test_unsqueeze_three_axes/model.onnx +0 -0
  391. onnx/backend/test/data/node/test_unsqueeze_two_axes/model.onnx +0 -0
  392. onnx/backend/test/data/node/test_unsqueeze_unsorted_axes/model.onnx +0 -0
  393. onnx/backend/test/data/node/test_wrap_pad/model.onnx +0 -0
  394. onnx/backend/test/loader/__init__.py +0 -1
  395. onnx/backend/test/runner/__init__.py +43 -15
  396. onnx/checker.cc +104 -99
  397. onnx/checker.h +23 -3
  398. onnx/checker.py +56 -20
  399. onnx/common/assertions.cc +10 -5
  400. onnx/common/common.h +19 -0
  401. onnx/common/file_utils.h +3 -1
  402. onnx/common/interned_strings.h +7 -1
  403. onnx/common/ir.h +30 -7
  404. onnx/common/ir_pb_converter.cc +6 -0
  405. onnx/common/path.h +18 -2
  406. onnx/common/proto_util.h +43 -0
  407. onnx/common/version.h +1 -1
  408. onnx/cpp2py_export.cc +88 -56
  409. onnx/defs/__init__.py +29 -8
  410. onnx/defs/controlflow/defs.cc +16 -16
  411. onnx/defs/controlflow/old.cc +177 -0
  412. onnx/defs/data_propagators.h +2 -0
  413. onnx/defs/data_type_utils.cc +2 -0
  414. onnx/defs/generator/defs.cc +6 -4
  415. onnx/defs/generator/old.cc +115 -0
  416. onnx/defs/math/defs.cc +37 -142
  417. onnx/defs/math/old.cc +96 -12
  418. onnx/defs/math/utils.cc +127 -0
  419. onnx/defs/math/utils.h +8 -0
  420. onnx/defs/nn/defs.cc +72 -59
  421. onnx/defs/nn/old.cc +181 -2
  422. onnx/defs/object_detection/defs.cc +2 -2
  423. onnx/defs/object_detection/old.cc +2 -2
  424. onnx/defs/operator_sets.h +51 -0
  425. onnx/defs/operator_sets_ml.h +14 -0
  426. onnx/defs/parser.cc +112 -54
  427. onnx/defs/parser.h +14 -2
  428. onnx/defs/printer.cc +14 -7
  429. onnx/defs/quantization/defs.cc +111 -44
  430. onnx/defs/quantization/old.cc +130 -1
  431. onnx/defs/schema.cc +62 -18
  432. onnx/defs/schema.h +194 -48
  433. onnx/defs/shape_inference.cc +28 -19
  434. onnx/defs/shape_inference.h +2 -0
  435. onnx/defs/tensor/defs.cc +54 -96
  436. onnx/defs/tensor/old.cc +939 -34
  437. onnx/defs/tensor/utils.cc +6 -3
  438. onnx/defs/tensor/utils.h +5 -1
  439. onnx/defs/tensor_proto_util.cc +2 -0
  440. onnx/defs/tensor_util.cc +2 -0
  441. onnx/defs/traditionalml/defs.cc +273 -117
  442. onnx/defs/traditionalml/old.cc +329 -14
  443. onnx/defs/traditionalml/utils.h +27 -0
  444. onnx/external_data_helper.py +12 -26
  445. onnx/helper.py +242 -169
  446. onnx/hub.py +104 -70
  447. onnx/inliner/inliner.cc +89 -31
  448. onnx/inliner/inliner.h +5 -0
  449. onnx/inliner.py +2 -0
  450. onnx/mapping.py +9 -0
  451. onnx/model_container.py +346 -0
  452. onnx/numpy_helper.py +100 -38
  453. onnx/onnx-ml.proto +50 -13
  454. onnx/onnx.in.proto +50 -13
  455. onnx/onnx.proto +50 -13
  456. onnx/onnx_cpp2py_export/__init__.pyi +5 -0
  457. onnx/onnx_cpp2py_export/checker.pyi +21 -0
  458. onnx/onnx_cpp2py_export/defs.pyi +202 -0
  459. onnx/onnx_cpp2py_export/inliner.pyi +19 -0
  460. onnx/onnx_cpp2py_export/parser.pyi +32 -0
  461. onnx/onnx_cpp2py_export/printer.pyi +3 -0
  462. onnx/onnx_cpp2py_export/shape_inference.pyi +16 -0
  463. onnx/onnx_cpp2py_export/version_converter.pyi +4 -0
  464. onnx/onnx_cpp2py_export.cp311-win_amd64.pyd +0 -0
  465. onnx/onnx_data_pb2.pyi +146 -0
  466. onnx/onnx_ml_pb2.py +52 -52
  467. onnx/onnx_ml_pb2.pyi +663 -0
  468. onnx/onnx_operators_ml_pb2.pyi +67 -0
  469. onnx/reference/__init__.py +2 -0
  470. onnx/reference/custom_element_types.py +2 -0
  471. onnx/reference/op_run.py +166 -121
  472. onnx/reference/ops/_op.py +27 -50
  473. onnx/reference/ops/_op_list.py +36 -24
  474. onnx/reference/ops/aionnx_preview_training/_op_list.py +15 -8
  475. onnx/reference/ops/aionnxml/_common_classifier.py +3 -5
  476. onnx/reference/ops/aionnxml/_op_list.py +16 -8
  477. onnx/reference/ops/aionnxml/op_array_feature_extractor.py +4 -6
  478. onnx/reference/ops/aionnxml/op_linear_classifier.py +1 -2
  479. onnx/reference/ops/aionnxml/op_normalizer.py +3 -3
  480. onnx/reference/ops/aionnxml/op_svm_helper.py +1 -3
  481. onnx/reference/ops/aionnxml/op_svm_regressor.py +1 -3
  482. onnx/reference/ops/aionnxml/op_tree_ensemble.py +257 -0
  483. onnx/reference/ops/aionnxml/op_tree_ensemble_helper.py +2 -6
  484. onnx/reference/ops/aionnxml/op_tree_ensemble_regressor.py +4 -4
  485. onnx/reference/ops/experimental/_op_list.py +15 -8
  486. onnx/reference/ops/op_blackman_window.py +5 -6
  487. onnx/reference/ops/op_cast.py +22 -0
  488. onnx/reference/ops/op_cast_like.py +6 -0
  489. onnx/reference/ops/op_clip.py +5 -8
  490. onnx/reference/ops/op_col2im.py +1 -3
  491. onnx/reference/ops/op_constant.py +7 -1
  492. onnx/reference/ops/op_dequantize_linear.py +43 -40
  493. onnx/reference/ops/op_det.py +1 -1
  494. onnx/reference/ops/op_dynamic_quantize_linear.py +2 -2
  495. onnx/reference/ops/op_grid_sample.py +2 -4
  496. onnx/reference/ops/op_hamming_window.py +3 -6
  497. onnx/reference/ops/op_hann_window.py +3 -6
  498. onnx/reference/ops/op_if.py +4 -3
  499. onnx/reference/ops/op_loop.py +7 -9
  500. onnx/reference/ops/op_matmul.py +1 -2
  501. onnx/reference/ops/op_max_pool.py +5 -0
  502. onnx/reference/ops/op_optional.py +1 -1
  503. onnx/reference/ops/op_pool_common.py +3 -6
  504. onnx/reference/ops/op_qlinear_matmul.py +2 -2
  505. onnx/reference/ops/op_quantize_linear.py +166 -71
  506. onnx/reference/ops/op_resize.py +25 -21
  507. onnx/reference/ops/op_rnn.py +20 -12
  508. onnx/reference/ops/op_scan.py +23 -15
  509. onnx/reference/ops/op_scatter_elements.py +7 -6
  510. onnx/reference/ops/op_stft.py +3 -5
  511. onnx/reference/ops/op_string_normalizer.py +7 -7
  512. onnx/reference/ops/op_tfidf_vectorizer.py +7 -8
  513. onnx/reference/ops/op_topk.py +9 -11
  514. onnx/reference/ops/op_unique.py +1 -1
  515. onnx/reference/reference_evaluator.py +119 -63
  516. onnx/shape_inference/implementation.cc +160 -127
  517. onnx/shape_inference.py +11 -10
  518. onnx/subbyte.py +72 -0
  519. onnx/test/__init__.pyi +6 -0
  520. onnx/test/checker_test.py +21 -1
  521. onnx/test/compose_test.py +26 -74
  522. onnx/test/cpp/inliner_test.cc +76 -1
  523. onnx/test/cpp/ir_test.cc +60 -0
  524. onnx/test/cpp/parser_test.cc +106 -0
  525. onnx/test/function_test.py +1 -3
  526. onnx/test/helper_test.py +64 -4
  527. onnx/test/model_container_refeval_test.py +139 -0
  528. onnx/test/model_container_test.py +136 -0
  529. onnx/test/model_inference_test.py +44 -0
  530. onnx/test/reference_evaluator_ml_test.py +448 -47
  531. onnx/test/reference_evaluator_model_test.py +130 -0
  532. onnx/test/reference_evaluator_test.py +901 -14
  533. onnx/test/schema_test.py +166 -1
  534. onnx/test/shape_inference_test.py +285 -6
  535. onnx/test/symbolic_shape_test.py +3 -8
  536. onnx/test/test_backend_onnxruntime.py +238 -224
  537. onnx/test/test_backend_reference.py +11 -0
  538. onnx/test/test_external_data.py +51 -2
  539. onnx/test/version_converter/automatic_conversion_test_base.py +2 -1
  540. onnx/test/version_converter/automatic_upgrade_test.py +12 -10
  541. onnx/test/version_converter_test.py +166 -0
  542. onnx/tools/replace_constants.py +23 -26
  543. onnx/tools/update_model_dims.py +1 -2
  544. onnx/version.py +2 -2
  545. onnx/version_converter/adapters/group_normalization_20_21.h +128 -0
  546. onnx/version_converter/adapters/q_dq_21_20.h +77 -0
  547. onnx/version_converter/convert.h +67 -2
  548. onnx/version_converter.py +6 -142
  549. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/METADATA +18 -15
  550. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/RECORD +572 -406
  551. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/WHEEL +1 -1
  552. onnx/examples/Protobufs.ipynb +0 -639
  553. onnx/examples/check_model.ipynb +0 -128
  554. onnx/examples/load_model.ipynb +0 -116
  555. onnx/examples/make_model.ipynb +0 -176
  556. onnx/examples/np_array_tensorproto.ipynb +0 -136
  557. onnx/examples/resources/single_relu.onnx +0 -12
  558. onnx/examples/resources/single_relu_new.onnx +0 -12
  559. onnx/examples/resources/tensor.pb +0 -0
  560. onnx/examples/resources/two_transposes.onnx +0 -0
  561. onnx/examples/save_model.ipynb +0 -56
  562. onnx/examples/shape_inference.ipynb +0 -111
  563. onnx/test/reference_evaluator_backend_test.py +0 -876
  564. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_1.pb +0 -0
  565. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_4.pb +0 -0
  566. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_6.pb +0 -0
  567. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
  568. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_2.pb +0 -0
  569. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
  570. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_5.pb +0 -0
  571. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_7.pb +0 -0
  572. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
  573. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_1.pb +0 -0
  574. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_2.pb +0 -0
  575. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_4.pb +0 -0
  576. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_5.pb +0 -0
  577. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_6.pb +0 -0
  578. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_7.pb +0 -0
  579. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
  580. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
  581. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
  582. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/LICENSE +0 -0
  583. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/entry_points.txt +0 -0
  584. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/top_level.txt +0 -0
@@ -4,11 +4,9 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- import os
8
7
  import platform
9
- import sys
10
8
  import unittest
11
- from typing import Any, ClassVar
9
+ from typing import Any
12
10
 
13
11
  import numpy
14
12
  from packaging.version import Version
@@ -17,21 +15,16 @@ import onnx.backend.base
17
15
  import onnx.backend.test
18
16
  import onnx.shape_inference
19
17
  import onnx.version_converter
20
- from onnx import ModelProto
21
18
  from onnx.backend.base import Device, DeviceType
22
19
 
23
20
  try:
24
- from onnxruntime import InferenceSession
25
- from onnxruntime import __version__ as ort_version
26
- from onnxruntime import get_available_providers
27
- from onnxruntime.capi.onnxruntime_pybind11_state import InvalidArgument
21
+ import onnxruntime as ort
22
+
23
+ ort_version = Version(ort.__version__)
28
24
  except ImportError:
29
25
  # onnxruntime is not installed, all tests are skipped.
30
- InferenceSession = None
31
- ort_version = None
32
-
33
- def get_available_providers():
34
- return []
26
+ ort: Any = None # type: ignore[no-redef]
27
+ ort_version: Any = None # type: ignore[no-redef]
35
28
 
36
29
 
37
30
  # The following just executes a backend based on InferenceSession through the backend test
@@ -42,6 +35,7 @@ class InferenceSessionBackendRep(onnx.backend.base.BackendRep):
42
35
  self._session = session
43
36
 
44
37
  def run(self, inputs, **kwargs):
38
+ del kwargs # Unused
45
39
  if isinstance(inputs, numpy.ndarray):
46
40
  inputs = [inputs]
47
41
  if isinstance(inputs, list):
@@ -66,249 +60,269 @@ class InferenceSessionBackendRep(onnx.backend.base.BackendRep):
66
60
  return outs
67
61
 
68
62
 
69
- class InferenceSessionBackend(onnx.backend.base.Backend):
70
- providers: ClassVar[set[str]] = set(get_available_providers())
63
+ def _create_inference_session(model: onnx.ModelProto, device: str):
64
+ if device == "CPU":
65
+ providers = ("CPUExecutionProvider",)
66
+ elif device == "CUDA":
67
+ providers = ("CUDAExecutionProvider",)
68
+ else:
69
+ raise ValueError(f"Unexpected device {device!r}.")
70
+ try:
71
+ session = ort.InferenceSession(model.SerializeToString(), providers=providers)
72
+ except Exception as e:
73
+ raise RuntimeError(
74
+ f"Unable to create inference session. Model is:\n\n{onnx.printer.to_text(model)}"
75
+ ) from e
76
+ return session
71
77
 
72
- @classmethod
73
- def is_opset_supported(cls, model):
74
- return True, ""
75
78
 
79
+ class InferenceSessionBackend(onnx.backend.base.Backend):
76
80
  @classmethod
77
81
  def supports_device(cls, device: str) -> bool:
82
+ providers = set(ort.get_available_providers())
78
83
  d = Device(device)
79
- if d.type == DeviceType.CPU and "CPUExecutionProvider" in cls.providers:
84
+ if d.type == DeviceType.CPU and "CPUExecutionProvider" in providers:
80
85
  return True
81
- if d.type == DeviceType.CUDA and "CUDAExecutionProvider" in cls.providers:
86
+ if d.type == DeviceType.CUDA and "CUDAExecutionProvider" in providers:
82
87
  return True
83
88
  return False
84
89
 
85
- @classmethod
86
- def convert_version_opset_before(cls, model):
87
- opsets = {d.domain: d.version for d in model.opset_import}
88
- if "" not in opsets:
89
- return None
90
- try:
91
- return onnx.version_converter.convert_version(model, opsets[""] - 1)
92
- except RuntimeError:
93
- # Let's try without any change.
94
- del model.opset_import[:]
95
- for k, v in opsets.items():
96
- d = model.opset_import.add()
97
- d.domain = k
98
- d.version = v if k != "" else v - 1
99
- return model
100
-
101
- @classmethod
102
- def create_inference_session(cls, model, device):
103
- if device == "CPU":
104
- providers = ["CPUExecutionProvider"]
105
- elif device == "CUDA":
106
- providers = ["CUDAExecutionProvider"]
107
- else:
108
- raise ValueError(f"Unexepcted device {device!r}.")
109
- try:
110
- return InferenceSession(model.SerializeToString(), providers=providers)
111
- except InvalidArgument as e:
112
- if "Unsupported model IR version" in str(e):
113
- model.ir_version -= 1
114
- return cls.create_inference_session(model, device)
115
- if "Current official support for domain ai.onnx is till opset" in str(e):
116
- new_model = cls.convert_version_opset_before(model)
117
- if new_model is not None:
118
- return cls.create_inference_session(new_model, device)
119
- raise e
120
-
121
90
  @classmethod
122
91
  def prepare(
123
- cls, model: Any, device: str = "CPU", **kwargs: Any
92
+ cls, model: onnx.ModelProto, device: str = "CPU", **kwargs: Any
124
93
  ) -> InferenceSessionBackendRep:
125
- # if isinstance(model, InferenceSessionBackendRep):
126
- # return model
127
- if isinstance(model, InferenceSession):
128
- return InferenceSessionBackendRep(model)
129
- if isinstance(model, (str, bytes, ModelProto)):
130
- inf = cls.create_inference_session(model, device)
131
- return cls.prepare(inf, device, **kwargs)
132
- raise TypeError(f"Unexpected type {type(model)} for model.")
94
+ del kwargs # Unused
95
+ if not isinstance(model, (str, bytes, onnx.ModelProto)):
96
+ raise TypeError(f"Unexpected type {type(model)} for model.")
97
+
98
+ session = _create_inference_session(model, device)
99
+ return InferenceSessionBackendRep(session)
133
100
 
134
101
  @classmethod
135
- def run_model(cls, model, inputs, device=None, **kwargs):
136
- rep = cls.prepare(model, device, **kwargs)
137
- return rep.run(inputs, **kwargs)
102
+ def run_model(cls, model: onnx.ModelProto, inputs, device=None, **kwargs):
103
+ return super().run_model(model, inputs, device=device, **kwargs)
138
104
 
139
105
  @classmethod
140
106
  def run_node(cls, node, inputs, device=None, outputs_info=None, **kwargs):
141
107
  raise NotImplementedError("Unable to run the model node by node.")
142
108
 
143
109
 
144
- backend_test = onnx.backend.test.BackendTest(InferenceSessionBackend, __name__)
145
-
146
- if os.getenv("APPVEYOR"):
147
- backend_test.exclude("(test_vgg19|test_zfnet)")
148
- if platform.architecture()[0] == "32bit":
149
- backend_test.exclude("(test_vgg19|test_zfnet|test_bvlc_alexnet)")
150
- if platform.system() == "Windows":
151
- backend_test.exclude("test_sequence_model")
152
-
153
- # The following tests cannot pass because they consists in generating random number.
154
- backend_test.exclude("(test_bernoulli)")
155
-
156
- # The following tests are not supported by onnxruntime.
157
- backend_test.exclude(
158
- "("
159
- "test_adagrad"
160
- "|test_adam"
161
- "|test_add_uint8"
162
- "|bitshift_left_uint16"
163
- "|bitshift_right_uint16"
164
- "|cast_BFLOAT16_to_FLOAT"
165
- "|cast_FLOAT_to_BFLOAT16"
166
- "|castlike_BFLOAT16_to_FLOAT"
167
- "|castlike_FLOAT_to_BFLOAT16"
168
- "|clip_default_int8_min_expanded"
169
- "|clip_default_int8_max_expanded"
170
- "|div_uint8"
171
- "|gru_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
172
- "|loop16_seq_none" # The graph is missing type information needed to construct the ORT tensor.
173
- "|lstm_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
174
- "|m(in|ax)_u?int(16|8)"
175
- "|momentum"
176
- "|mul_uint8"
177
- "|pow_types_float32_uint32"
178
- "|pow_types_float32_uint64"
179
- "|simple_rnn_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
180
- "|sub_uint8"
181
- "|gradient_of_add"
182
- "|test_batchnorm_epsilon_training_mode" # Training mode does not support BN opset 14 (or higher) yet.
183
- "|test_batchnorm_example_training_mode" # Training mode does not support BN opset 14 (or higher) yet.
184
- "|_to_FLOAT8E4M3FN" # No corresponding Numpy type for Tensor Type.
185
- "|_to_FLOAT8E5M2" # No corresponding Numpy type for Tensor Type.
186
- "|cast_FLOAT8E" # No corresponding Numpy type for Tensor Type.
187
- "|castlike_FLOAT8E" # No corresponding Numpy type for Tensor Type.
188
- "|test_dequantizelinear_axis" # y_scale must be a scalar or 1D tensor of size 1.
189
- "|test_dequantizelinear" # No corresponding Numpy type for Tensor Type.
190
- "|test_quantizelinear_axis" # y_scale must be a scalar or 1D tensor of size 1.
191
- "|test_quantizelinear" # No corresponding Numpy type for Tensor Type.
192
- "|test_affine_grid_" # new IR version 9 and opset version 20 not supported yet.
193
- ")"
194
- )
195
-
196
- # The following tests fail due to small discrepancies.
197
- backend_test.exclude("(cast_FLOAT_to_STRING|castlike_FLOAT_to_STRING|dft|stft)")
198
-
199
- # The following tests fail due to huge discrepancies.
200
- backend_test.exclude(
201
- "("
202
- "resize_downsample_scales_cubic_align_corners"
203
- "|resize_downsample_scales_linear_align_corners"
204
- "|training_dropout"
205
- ")"
206
- )
207
-
208
- # The followiing tests fail due to a bug in onnxruntime in handling reduction
209
- # ops that perform reduction over an empty set of values.
210
- backend_test.exclude(
211
- "("
212
- "test_reduce_sum_empty_set"
213
- "|test_reduce_prod_empty_set"
214
- "|test_reduce_min_empty_set"
215
- "|test_reduce_max_empty_set"
216
- "|test_reduce_sum_square_empty_set"
217
- "|test_reduce_log_sum_empty_set"
218
- "|test_reduce_log_sum_exp_empty_set"
219
- "|test_reduce_l1_empty_set"
220
- "|test_reduce_l2_empty_set"
221
- ")"
222
- )
223
-
224
- # The following tests fail for no obvious reason.
225
- backend_test.exclude(
226
- "("
227
- "maxunpool_export_with_output_shape" # not the same expected output
228
- "|softplus_example_expanded" # Could not find an implementation for Exp(1) node with name ''
229
- "|softplus_expanded" # Could not find an implementation for Exp(1) node with name ''
230
- "|AvgPool[1-3]d" # Could not find an implementation for AveragePool(1) node with name ''
231
- "|BatchNorm1d_3d_input_eval" # Could not find an implementation for BatchNormalization(6) node with name ''
232
- "|BatchNorm[2-3]d_eval" # Could not find an implementation for BatchNormalization(6) node with name ''
233
- "|GLU" # Could not find an implementation for Mul(6) node with name ''
234
- "|Linear" # Could not find an implementation for Gemm(6) node with name ''
235
- "|PReLU" # Could not find an implementation for PRelu(6) node with name ''
236
- "|PoissonNLL" # Could not find an implementation for Mul(6) node with name ''
237
- "|Softsign" # Could not find an implementation for Gemm(6) node with name ''
238
- "|operator_add_broadcast" # Could not find an implementation for Gemm(6) node with name ''
239
- "|operator_add_size1" # Could not find an implementation for Gemm(6) node with name ''
240
- "|operator_addconstant" # Could not find an implementation for Gemm(6) node with name ''
241
- "|operator_addmm" # Could not find an implementation for Gemm(6) node with name ''
242
- "|operator_basic" # Could not find an implementation for Add(6) node with name ''
243
- "|operator_mm" # Could not find an implementation for Gemm(6) node with name ''
244
- "|operator_non_float_params" # Could not find an implementation for Add(6) node with name ''
245
- "|operator_params" # Could not find an implementation for Add(6) node with name ''
246
- "|operator_pow" # Could not find an implementation for Pow(1) node with name ''
247
- ")"
248
- )
249
-
250
- # The following tests are new with opset 19 and 20, or ai.onnx.ml 4
251
- if ort_version is not None and Version(ort_version) < Version("1.16"):
252
- # version should be 1.15 but there is no development version number.
110
+ if ort is not None:
111
+ backend_test = onnx.backend.test.BackendTest(InferenceSessionBackend, __name__)
112
+
113
+ if platform.architecture()[0] == "32bit":
114
+ backend_test.exclude("(test_vgg19|test_zfnet|test_bvlc_alexnet)")
115
+ if platform.system() == "Windows":
116
+ backend_test.exclude("test_sequence_model")
117
+
118
+ # The following tests cannot pass because they consists in generating random number.
119
+ backend_test.exclude("(test_bernoulli)")
120
+
121
+ # The following tests are not supported by onnxruntime.
122
+ backend_test.exclude(
123
+ "("
124
+ "test_adagrad"
125
+ "|test_adam"
126
+ "|test_add_uint8"
127
+ "|bitshift_left_uint16"
128
+ "|bitshift_right_uint16"
129
+ "|cast_BFLOAT16_to_FLOAT"
130
+ "|cast_FLOAT_to_BFLOAT16"
131
+ "|castlike_BFLOAT16_to_FLOAT"
132
+ "|castlike_FLOAT_to_BFLOAT16"
133
+ "|clip_default_int8_min_expanded"
134
+ "|clip_default_int8_max_expanded"
135
+ "|div_uint8"
136
+ "|gru_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
137
+ "|loop16_seq_none" # The graph is missing type information needed to construct the ORT tensor.
138
+ "|lstm_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
139
+ "|m(in|ax)_u?int(16|8)"
140
+ "|momentum"
141
+ "|mul_uint8"
142
+ "|pow_types_float32_uint32"
143
+ "|pow_types_float32_uint64"
144
+ "|simple_rnn_batchwise" # Batchwise recurrent operations (layout == 1) are not supported.
145
+ "|sub_uint8"
146
+ "|gradient_of_add"
147
+ "|test_batchnorm_epsilon_training_mode" # Training mode does not support BN opset 14 (or higher) yet.
148
+ "|test_batchnorm_example_training_mode" # Training mode does not support BN opset 14 (or higher) yet.
149
+ "|_to_FLOAT8E4M3FN" # No corresponding Numpy type for Tensor Type.
150
+ "|_to_FLOAT8E5M2" # No corresponding Numpy type for Tensor Type.
151
+ "|cast_FLOAT8E" # No corresponding Numpy type for Tensor Type.
152
+ "|castlike_FLOAT8E" # No corresponding Numpy type for Tensor Type.
153
+ "|test_dequantizelinear_axis" # y_scale must be a scalar or 1D tensor of size 1.
154
+ "|test_dequantizelinear" # No corresponding Numpy type for Tensor Type.
155
+ "|test_quantizelinear_axis" # y_scale must be a scalar or 1D tensor of size 1.
156
+ "|test_quantizelinear" # No corresponding Numpy type for Tensor Type.
157
+ "|test_affine_grid_" # new IR version 9 and opset version 20 not supported yet.
158
+ "|test_quantizelinear_uint4" # No corresponding Numpy type for Tensor Type.
159
+ "|test_quantizelinear_int4" # No corresponding Numpy type for Tensor Type.
160
+ "|test_dequantizelinear_uint4" # No corresponding Numpy type for Tensor Type.
161
+ "|test_dequantizelinear_int4" # No corresponding Numpy type for Tensor Type.
162
+ "|test_cast_UINT4_to_FLOAT" # No corresponding Numpy type for Tensor Type.
163
+ "|test_cast_INT4_to_FLOAT" # No corresponding Numpy type for Tensor Type.
164
+ "|test_cast_UINT4_to_FLOAT16" # No corresponding Numpy type for Tensor Type.
165
+ "|test_cast_INT4_to_FLOAT16" # No corresponding Numpy type for Tensor Type.
166
+ "|test_maxpool_2d_ceil_output_size_reduce_by_one" # TODO: remove after https://github.com/microsoft/onnxruntime/pull/18377 in Ort release.
167
+ ")"
168
+ )
169
+
170
+ # Exclude all tests that require IR10 until onnxruntime aligns
171
+ # TODO: Unwaive tests once onnxruntime supports Opset21/IR10 https://github.com/onnx/onnx/issues/5840
253
172
  backend_test.exclude(
254
173
  "("
255
- "averagepool"
256
- "|_pad_"
257
- "|_resize_"
258
- "|_size_"
259
- "|cast"
260
- "|castlike"
261
- "|equal_string_broadcast"
262
- "|equal_string"
263
- "|equal"
264
- "|half_pixel_symmetric"
265
- "|identity"
266
- "|reshape"
174
+ "test_cast_"
175
+ "|test_castlike_"
176
+ "|test_constant"
177
+ "|test_edge_pad_cpu"
178
+ "|test_flatten_"
179
+ "|test_identity"
180
+ "|test_reflect_pad"
181
+ "|test_reshape_"
182
+ "|test_shape_"
183
+ "|test_size_"
184
+ "|test_squeeze_"
185
+ "|test_transpose_"
186
+ "|test_unsqueeze_"
187
+ "|test_wrap_pad_"
267
188
  ")"
268
189
  )
269
190
 
270
- if ort_version is not None and Version(ort_version) < Version("1.17"):
271
- # version should be 1.15 but there is no development version number.
191
+ # The following tests fail due to small discrepancies.
192
+ backend_test.exclude("(cast_FLOAT_to_STRING|castlike_FLOAT_to_STRING|stft)")
193
+
194
+ # The following tests fail due to huge discrepancies.
272
195
  backend_test.exclude(
273
196
  "("
274
- "deform_conv"
275
- "|dft"
276
- "|gelu"
277
- "|gridsample"
278
- "|identity_opt"
279
- "|image_decoder"
280
- "|isinf_float16"
281
- "|label_encoder"
282
- "|optional_get_element_optional_sequence"
283
- "|reduce_max_bool_inputs"
284
- "|reduce_min_bool_inputs"
285
- "|regex_full_match"
286
- "|string_concat"
287
- "|string_split"
197
+ "resize_downsample_scales_cubic_align_corners"
198
+ "|resize_downsample_scales_linear_align_corners"
199
+ "|training_dropout"
288
200
  ")"
289
201
  )
290
202
 
291
- if sys.version_info[:2] < (3, 8) or Version(numpy.__version__) < Version("1.23.5"):
292
- # Version 1.21.5 causes segmentation faults.
293
- # onnxruntime should be tested with the same numpy API
294
- # onnxruntime was compiled with.
295
- backend_test.exclude("")
203
+ # The followiing tests fail due to a bug in onnxruntime in handling reduction
204
+ # ops that perform reduction over an empty set of values.
205
+ backend_test.exclude(
206
+ "("
207
+ "test_reduce_sum_empty_set"
208
+ "|test_reduce_prod_empty_set"
209
+ "|test_reduce_min_empty_set"
210
+ "|test_reduce_max_empty_set"
211
+ "|test_reduce_sum_square_empty_set"
212
+ "|test_reduce_log_sum_empty_set"
213
+ "|test_reduce_log_sum_exp_empty_set"
214
+ "|test_reduce_l1_empty_set"
215
+ "|test_reduce_l2_empty_set"
216
+ ")"
217
+ )
296
218
 
297
- # import all test cases at global scope to make them visible to python.unittest
298
- if InferenceSession is not None:
219
+ # The following tests fail for no obvious reason.
220
+ backend_test.exclude(
221
+ "("
222
+ "maxunpool_export_with_output_shape" # not the same expected output
223
+ "|softplus_example_expanded" # Could not find an implementation for Exp(1) node with name ''
224
+ "|softplus_expanded" # Could not find an implementation for Exp(1) node with name ''
225
+ "|AvgPool[1-3]d" # Could not find an implementation for AveragePool(1) node with name ''
226
+ "|BatchNorm1d_3d_input_eval" # Could not find an implementation for BatchNormalization(6) node with name ''
227
+ "|BatchNorm[2-3]d_eval" # Could not find an implementation for BatchNormalization(6) node with name ''
228
+ "|GLU" # Could not find an implementation for Mul(6) node with name ''
229
+ "|Linear" # Could not find an implementation for Gemm(6) node with name ''
230
+ "|PReLU" # Could not find an implementation for PRelu(6) node with name ''
231
+ "|PoissonNLL" # Could not find an implementation for Mul(6) node with name ''
232
+ "|Softsign" # Could not find an implementation for Gemm(6) node with name ''
233
+ "|operator_add_broadcast" # Could not find an implementation for Gemm(6) node with name ''
234
+ "|operator_add_size1" # Could not find an implementation for Gemm(6) node with name ''
235
+ "|operator_addconstant" # Could not find an implementation for Gemm(6) node with name ''
236
+ "|operator_addmm" # Could not find an implementation for Gemm(6) node with name ''
237
+ "|operator_basic" # Could not find an implementation for Add(6) node with name ''
238
+ "|operator_mm" # Could not find an implementation for Gemm(6) node with name ''
239
+ "|operator_non_float_params" # Could not find an implementation for Add(6) node with name ''
240
+ "|operator_params" # Could not find an implementation for Add(6) node with name ''
241
+ "|operator_pow" # Could not find an implementation for Pow(1) node with name ''
242
+ ")"
243
+ )
244
+
245
+ # The following tests are new with opset 19 and 20, or ai.onnx.ml 4
246
+ if ort_version is not None and ort_version < Version("1.16"):
247
+ backend_test.exclude(
248
+ "("
249
+ "averagepool"
250
+ "|_pad_"
251
+ "|_resize_"
252
+ "|_size_"
253
+ "|cast"
254
+ "|castlike"
255
+ "|equal_string_broadcast"
256
+ "|equal_string"
257
+ "|equal"
258
+ "|half_pixel_symmetric"
259
+ "|identity"
260
+ "|reshape"
261
+ ")"
262
+ )
263
+ if ort_version is not None and ort_version < Version("1.17"):
264
+ backend_test.exclude(
265
+ "("
266
+ "deform_conv"
267
+ "|dequantizelinear_uint16"
268
+ "|dequantizelinear_int16"
269
+ "|quantizelinear_uint16"
270
+ "|quantizelinear_int16"
271
+ "|dft"
272
+ "|gelu"
273
+ "|gridsample"
274
+ "|group_normalization"
275
+ "|identity_opt"
276
+ "|image_decoder"
277
+ "|isinf_float16"
278
+ "|label_encoder"
279
+ "|optional_get_element_optional_sequence"
280
+ "|qlinearmatmul_2D_int8"
281
+ "|qlinearmatmul_2D_uint8_float16"
282
+ "|qlinearmatmul_3D_int8"
283
+ "|qlinearmatmul_3D_uint8_float16"
284
+ "|reduce_max_bool_inputs"
285
+ "|reduce_min_bool_inputs"
286
+ "|regex_full_match"
287
+ "|string_concat"
288
+ "|string_split"
289
+ "|constantofshape_float_ones"
290
+ "|constantofshape_int_shape_zero"
291
+ "|constantofshape_int_zeros"
292
+ "|isinf"
293
+ "|isinf_negative"
294
+ "|isinf_positive"
295
+ "|isnan"
296
+ "|isnan_float16"
297
+ "|qlinearmatmul_2D_uint8_float32"
298
+ "|qlinearmatmul_3D_uint8_float32"
299
+ ")"
300
+ )
301
+ if ort_version is not None and ort_version < Version("1.18"):
302
+ # when adding new tests to the list, please add a comment with the reason for exclusion
303
+ # for tests that "not supported by onnxruntime 1.17", it will be solved in the next
304
+ # onnxruntime release with ONNX 1.16.0 integrated. The work is covered in ONNX integration procedure.
305
+ backend_test.exclude(
306
+ "("
307
+ "deform_conv" # deform_conv is not supported in onnxruntime
308
+ "|dft" # Max absolute difference > atol=1e-07. shall be able to set atol (https://github.com/onnx/onnx/issues/5897)
309
+ "|group_normalization" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
310
+ "|identity_opt" # fixed in ort 1.18 (https://github.com/microsoft/onnxruntime/pull/19273)
311
+ "|image_decoder" # image_decoder is not supported in onnxruntime
312
+ "|optional_get_element_optional_sequence" # fixed in ort 1.18 (https://github.com/microsoft/onnxruntime/pull/19273)
313
+ "|qlinearmatmul_2D_int8" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
314
+ "|qlinearmatmul_2D_uint8_float16" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
315
+ "|qlinearmatmul_3D_int8" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
316
+ "|qlinearmatmul_3D_uint8_float16" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
317
+ "|qlinearmatmul_2D_uint8_float32" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
318
+ "|qlinearmatmul_3D_uint8_float32" # new/updated test cases with opset and/or IR version not supported by onnxruntime 1.17
319
+ "|tree_ensemble" # tree_ensemble not yet implemented in ort
320
+ ")"
321
+ )
322
+
323
+ # Import all test cases at global scope to make them visible to python.unittest
299
324
  globals().update(backend_test.test_cases)
300
325
 
301
326
 
302
327
  if __name__ == "__main__":
303
- res = unittest.main(verbosity=2, exit=False)
304
- tests_run = res.result.testsRun
305
- errors = len(res.result.errors)
306
- skipped = len(res.result.skipped)
307
- unexpected_successes = len(res.result.unexpectedSuccesses)
308
- expected_failures = len(res.result.expectedFailures)
309
- print("---------------------------------")
310
- print(
311
- f"tests_run={tests_run} errors={errors} skipped={skipped} "
312
- f"unexpected_successes={unexpected_successes} "
313
- f"expected_failures={expected_failures}"
314
- )
328
+ unittest.main()
@@ -120,12 +120,18 @@ backend_test.exclude(
120
120
  "|test_cast_FLOAT16_to_FLOAT8"
121
121
  "|test_castlike_FLOAT_to_FLOAT8"
122
122
  "|test_castlike_FLOAT16_to_FLOAT8"
123
+ "|test_cast_FLOAT_to_UINT4"
124
+ "|test_cast_FLOAT16_to_UINT4"
125
+ "|test_cast_FLOAT_to_INT4"
126
+ "|test_cast_FLOAT16_to_INT4"
123
127
  "|test_cast_no_saturate_FLOAT_to_FLOAT8"
124
128
  "|test_cast_no_saturate_FLOAT16_to_FLOAT8"
125
129
  "|test_cast_BFLOAT16_to_FLOAT"
126
130
  "|test_castlike_BFLOAT16_to_FLOAT"
127
131
  "|test_quantizelinear_e4m3"
128
132
  "|test_quantizelinear_e5m2"
133
+ "|test_quantizelinear_uint4"
134
+ "|test_quantizelinear_int4"
129
135
  ")"
130
136
  )
131
137
 
@@ -181,6 +187,11 @@ if sys.platform == "win32":
181
187
  backend_test.exclude("test_regex_full_match_empty_cpu")
182
188
  backend_test.exclude("test_image_decoder_decode_")
183
189
 
190
+ if sys.platform == "darwin":
191
+ # FIXME: https://github.com/onnx/onnx/issues/5792
192
+ backend_test.exclude("test_qlinearmatmul_3D_int8_float16_cpu")
193
+ backend_test.exclude("test_qlinearmatmul_3D_int8_float32_cpu")
194
+
184
195
  # op_dft and op_stft requires numpy >= 1.21.5
185
196
  if version_utils.numpy_older_than("1.21.5"):
186
197
  backend_test.exclude("test_stft")
@@ -3,6 +3,7 @@
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
  from __future__ import annotations
5
5
 
6
+ import itertools
6
7
  import os
7
8
  import pathlib
8
9
  import tempfile
@@ -204,6 +205,52 @@ class TestLoadExternalDataSingleFile(TestLoadExternalDataBase):
204
205
  attribute_tensor = new_model.graph.node[0].attribute[0].t
205
206
  np.testing.assert_allclose(to_array(attribute_tensor), self.attribute_value)
206
207
 
208
+ @parameterized.parameterized.expand(itertools.product((True, False), (True, False)))
209
+ def test_save_external_invalid_single_file_data_and_check(
210
+ self, use_absolute_path: bool, use_model_path: bool
211
+ ) -> None:
212
+ model = onnx.load_model(self.model_filename, self.serialization_format)
213
+
214
+ model_dir = os.path.join(self.temp_dir, "save_copy")
215
+ os.mkdir(model_dir)
216
+
217
+ traversal_external_data_dir = os.path.join(
218
+ self.temp_dir, "invlid_external_data"
219
+ )
220
+ os.mkdir(traversal_external_data_dir)
221
+
222
+ if use_absolute_path:
223
+ traversal_external_data_location = os.path.join(
224
+ traversal_external_data_dir, "tensors.bin"
225
+ )
226
+ else:
227
+ traversal_external_data_location = "../invlid_external_data/tensors.bin"
228
+
229
+ external_data_dir = os.path.join(self.temp_dir, "external_data")
230
+ os.mkdir(external_data_dir)
231
+ new_model_filepath = os.path.join(model_dir, "model.onnx")
232
+
233
+ def convert_model_to_external_data_no_check(model: ModelProto, location: str):
234
+ for tensor in model.graph.initializer:
235
+ if tensor.HasField("raw_data"):
236
+ set_external_data(tensor, location)
237
+
238
+ convert_model_to_external_data_no_check(
239
+ model,
240
+ location=traversal_external_data_location,
241
+ )
242
+
243
+ onnx.save_model(model, new_model_filepath, self.serialization_format)
244
+ if use_model_path:
245
+ with self.assertRaises(onnx.checker.ValidationError):
246
+ _ = onnx.load_model(new_model_filepath, self.serialization_format)
247
+ else:
248
+ onnx_model = onnx.load_model(
249
+ new_model_filepath, self.serialization_format, load_external_data=False
250
+ )
251
+ with self.assertRaises(onnx.checker.ValidationError):
252
+ load_external_data_for_model(onnx_model, external_data_dir)
253
+
207
254
 
208
255
  @parameterized.parameterized_class(
209
256
  [
@@ -674,7 +721,8 @@ class TestExternalDataToArray(unittest.TestCase):
674
721
 
675
722
  class TestNotAllowToLoadExternalDataOutsideModelDirectory(TestLoadExternalDataBase):
676
723
  """Essential test to check that onnx (validate) C++ code will not allow to load external_data outside the model
677
- directory."""
724
+ directory.
725
+ """
678
726
 
679
727
  def create_external_data_tensor(
680
728
  self, value: list[Any], tensor_name: str, location: str = ""
@@ -713,7 +761,8 @@ class TestNotAllowToLoadExternalDataOutsideModelDirectoryOnWindows(
713
761
  TestNotAllowToLoadExternalDataOutsideModelDirectory
714
762
  ):
715
763
  """Essential test to check that onnx (validate) C++ code will not allow to load external_data outside the model
716
- directory."""
764
+ directory.
765
+ """
717
766
 
718
767
  def test_check_model(self) -> None:
719
768
  """We only test the model validation as onnxruntime uses this to load the model."""
@@ -53,7 +53,8 @@ class TestAutomaticConversion(unittest.TestCase):
53
53
  optional_outputs: Sequence[int] = (),
54
54
  is_upgrade: bool = True,
55
55
  ) -> None:
56
- """
56
+ """Test conversion.
57
+
57
58
  Args:
58
59
  op: A string representing the name of the operator to test.
59
60
  from_opset: An integer representing the lowest opset version to convert.