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
onnx/__init__.py CHANGED
@@ -16,6 +16,7 @@ __all__ = [
16
16
  "IR_VERSION_2019_9_19",
17
17
  "IR_VERSION_2020_5_8",
18
18
  "IR_VERSION_2021_7_30",
19
+ "IR_VERSION_2023_5_5",
19
20
  "EXPERIMENTAL",
20
21
  "STABLE",
21
22
  # Modules
@@ -93,6 +94,7 @@ from onnx.onnx_pb import (
93
94
  IR_VERSION_2019_9_19,
94
95
  IR_VERSION_2020_5_8,
95
96
  IR_VERSION_2021_7_30,
97
+ IR_VERSION_2023_5_5,
96
98
  ModelProto,
97
99
  NodeProto,
98
100
  OperatorSetIdProto,
@@ -186,7 +188,7 @@ def _get_serializer(
186
188
 
187
189
  def load_model(
188
190
  f: IO[bytes] | str | os.PathLike,
189
- format: _SupportedFormat | None = None,
191
+ format: _SupportedFormat | None = None, # noqa: A002
190
192
  load_external_data: bool = True,
191
193
  ) -> ModelProto:
192
194
  """Loads a serialized ModelProto into memory.
@@ -218,7 +220,7 @@ def load_model(
218
220
 
219
221
  def load_tensor(
220
222
  f: IO[bytes] | str | os.PathLike,
221
- format: _SupportedFormat | None = None,
223
+ format: _SupportedFormat | None = None, # noqa: A002
222
224
  ) -> TensorProto:
223
225
  """Loads a serialized TensorProto into memory.
224
226
 
@@ -237,7 +239,7 @@ def load_tensor(
237
239
 
238
240
  def load_model_from_string(
239
241
  s: bytes | str,
240
- format: _SupportedFormat = _DEFAULT_FORMAT,
242
+ format: _SupportedFormat = _DEFAULT_FORMAT, # noqa: A002
241
243
  ) -> ModelProto:
242
244
  """Loads a binary string (bytes) that contains serialized ModelProto.
243
245
 
@@ -256,7 +258,7 @@ def load_model_from_string(
256
258
 
257
259
  def load_tensor_from_string(
258
260
  s: bytes,
259
- format: _SupportedFormat = _DEFAULT_FORMAT,
261
+ format: _SupportedFormat = _DEFAULT_FORMAT, # noqa: A002
260
262
  ) -> TensorProto:
261
263
  """Loads a binary string (bytes) that contains serialized TensorProto.
262
264
 
@@ -276,7 +278,7 @@ def load_tensor_from_string(
276
278
  def save_model(
277
279
  proto: ModelProto | bytes,
278
280
  f: IO[bytes] | str | os.PathLike,
279
- format: _SupportedFormat | None = None,
281
+ format: _SupportedFormat | None = None, # noqa: A002
280
282
  *,
281
283
  save_as_external_data: bool = False,
282
284
  all_tensors_to_one_file: bool = True,
@@ -284,8 +286,7 @@ def save_model(
284
286
  size_threshold: int = 1024,
285
287
  convert_attribute: bool = False,
286
288
  ) -> None:
287
- """
288
- Saves the ModelProto to the specified path and optionally, serialize tensors with raw data as external data before saving.
289
+ """Saves the ModelProto to the specified path and optionally, serialize tensors with raw data as external data before saving.
289
290
 
290
291
  Args:
291
292
  proto: should be a in-memory ModelProto
@@ -330,10 +331,9 @@ def save_model(
330
331
  def save_tensor(
331
332
  proto: TensorProto,
332
333
  f: IO[bytes] | str | os.PathLike,
333
- format: _SupportedFormat | None = None,
334
+ format: _SupportedFormat | None = None, # noqa: A002
334
335
  ) -> None:
335
- """
336
- Saves the TensorProto to the specified path.
336
+ """Saves the TensorProto to the specified path.
337
337
 
338
338
  Args:
339
339
  proto: should be a in-memory TensorProto
onnx/backend/base.py CHANGED
@@ -14,9 +14,7 @@ from onnx import IR_VERSION, ModelProto, NodeProto
14
14
 
15
15
 
16
16
  class DeviceType:
17
- """
18
- Describes device type.
19
- """
17
+ """Describes device type."""
20
18
 
21
19
  _Type = NewType("_Type", int)
22
20
  CPU: _Type = _Type(0)
@@ -24,8 +22,7 @@ class DeviceType:
24
22
 
25
23
 
26
24
  class Device:
27
- """
28
- Describes device type and device id
25
+ """Describes device type and device id
29
26
  syntax: device_type:device_id(optional)
30
27
  example: 'CPU', 'CUDA', 'CUDA:1'
31
28
  """
@@ -56,8 +53,7 @@ def namedtupledict(
56
53
 
57
54
 
58
55
  class BackendRep:
59
- """
60
- BackendRep is the handle that a Backend returns after preparing to execute
56
+ """BackendRep is the handle that a Backend returns after preparing to execute
61
57
  a model repeatedly. Users will then pass inputs to the run function of
62
58
  BackendRep to retrieve the corresponding results.
63
59
  """
@@ -68,8 +64,7 @@ class BackendRep:
68
64
 
69
65
 
70
66
  class Backend:
71
- """
72
- Backend is the entity that will take an ONNX model with inputs,
67
+ """Backend is the entity that will take an ONNX model with inputs,
73
68
  perform a computation, and then return the output.
74
69
 
75
70
  For one-off execution, users can use run_node and run_model to obtain results quickly.
@@ -112,11 +107,16 @@ class Backend:
112
107
  **kwargs: Dict[str, Any],
113
108
  ) -> Optional[Tuple[Any, ...]]:
114
109
  """Simple run one operator and return the results.
110
+
115
111
  Args:
112
+ node: The node proto.
113
+ inputs: Inputs to the node.
114
+ device: The device to run on.
116
115
  outputs_info: a list of tuples, which contains the element type and
117
- shape of each output. First element of the tuple is the dtype, and
118
- the second element is the shape. More use case can be found in
119
- https://github.com/onnx/onnx/blob/main/onnx/backend/test/runner/__init__.py
116
+ shape of each output. First element of the tuple is the dtype, and
117
+ the second element is the shape. More use case can be found in
118
+ https://github.com/onnx/onnx/blob/main/onnx/backend/test/runner/__init__.py
119
+ kwargs: Other keyword arguments.
120
120
  """
121
121
  # TODO Remove Optional from return type
122
122
  if "opset_version" in kwargs:
@@ -131,8 +131,7 @@ class Backend:
131
131
 
132
132
  @classmethod
133
133
  def supports_device(cls, device: str) -> bool:
134
- """
135
- Checks whether the backend is compiled with particular device support.
134
+ """Checks whether the backend is compiled with particular device support.
136
135
  In particular it's used in the testing suite.
137
136
  """
138
137
  return True
@@ -3,5 +3,5 @@
3
3
  import numpy as np
4
4
 
5
5
 
6
- def abs(input: np.ndarray) -> np.ndarray:
6
+ def abs(input: np.ndarray) -> np.ndarray: # noqa: A001
7
7
  return np.abs(input) # type: ignore[no-any-return]
@@ -42,7 +42,6 @@ BASE_URL = "onnx/backend/test/data/light/light_%s.onnx"
42
42
 
43
43
  def collect_testcases() -> List[TestCase]:
44
44
  """Collect model test cases defined in python/numpy code."""
45
-
46
45
  real_model_testcases = []
47
46
 
48
47
  model_tests = [
@@ -0,0 +1,122 @@
1
+ # Copyright (c) ONNX Project Contributors
2
+
3
+ # SPDX-License-Identifier: Apache-2.0
4
+
5
+ import numpy as np
6
+
7
+ import onnx
8
+ from onnx.backend.test.case.base import Base
9
+ from onnx.backend.test.case.node import expect
10
+ from onnx.helper import make_tensor
11
+
12
+
13
+ class TreeEnsemble(Base):
14
+ @staticmethod
15
+ def export_tree_ensemble_single_tree() -> None:
16
+ node = onnx.helper.make_node(
17
+ "TreeEnsemble",
18
+ ["X"],
19
+ ["Y"],
20
+ domain="ai.onnx.ml",
21
+ n_targets=2,
22
+ membership_values=None,
23
+ nodes_missing_value_tracks_true=None,
24
+ nodes_hitrates=None,
25
+ aggregate_function=1,
26
+ post_transform=0,
27
+ tree_roots=[0],
28
+ nodes_modes=make_tensor(
29
+ "nodes_modes",
30
+ onnx.TensorProto.UINT8,
31
+ (3,),
32
+ np.array([0, 0, 0], dtype=np.uint8),
33
+ ),
34
+ nodes_featureids=[0, 0, 0],
35
+ nodes_splits=make_tensor(
36
+ "nodes_splits",
37
+ onnx.TensorProto.DOUBLE,
38
+ (3,),
39
+ np.array([3.14, 1.2, 4.2], dtype=np.float64),
40
+ ),
41
+ nodes_truenodeids=[1, 0, 1],
42
+ nodes_trueleafs=[0, 1, 1],
43
+ nodes_falsenodeids=[2, 2, 3],
44
+ nodes_falseleafs=[0, 1, 1],
45
+ leaf_targetids=[0, 1, 0, 1],
46
+ leaf_weights=make_tensor(
47
+ "leaf_weights",
48
+ onnx.TensorProto.DOUBLE,
49
+ (4,),
50
+ np.array([5.23, 12.12, -12.23, 7.21], dtype=np.float64),
51
+ ),
52
+ )
53
+
54
+ x = np.array([1.2, 3.4, -0.12, 1.66, 4.14, 1.77], np.float64).reshape(3, 2)
55
+ y = np.array([[5.23, 0], [5.23, 0], [0, 12.12]], dtype=np.float64)
56
+ expect(
57
+ node,
58
+ inputs=[x],
59
+ outputs=[y],
60
+ name="test_ai_onnx_ml_tree_ensemble_single_tree",
61
+ )
62
+
63
+ @staticmethod
64
+ def export_tree_ensemble_set_membership() -> None:
65
+ node = onnx.helper.make_node(
66
+ "TreeEnsemble",
67
+ ["X"],
68
+ ["Y"],
69
+ domain="ai.onnx.ml",
70
+ n_targets=4,
71
+ aggregate_function=1,
72
+ membership_values=make_tensor(
73
+ "membership_values",
74
+ onnx.TensorProto.FLOAT,
75
+ (8,),
76
+ [1.2, 3.7, 8, 9, np.nan, 12, 7, np.nan],
77
+ ),
78
+ nodes_missing_value_tracks_true=None,
79
+ nodes_hitrates=None,
80
+ post_transform=0,
81
+ tree_roots=[0],
82
+ nodes_modes=make_tensor(
83
+ "nodes_modes",
84
+ onnx.TensorProto.UINT8,
85
+ (3,),
86
+ np.array([0, 6, 6], dtype=np.uint8),
87
+ ),
88
+ nodes_featureids=[0, 0, 0],
89
+ nodes_splits=make_tensor(
90
+ "nodes_splits",
91
+ onnx.TensorProto.FLOAT,
92
+ (3,),
93
+ np.array([11, 232344.0, np.nan], dtype=np.float32),
94
+ ),
95
+ nodes_trueleafs=[0, 1, 1],
96
+ nodes_truenodeids=[1, 0, 1],
97
+ nodes_falseleafs=[1, 0, 1],
98
+ nodes_falsenodeids=[2, 2, 3],
99
+ leaf_targetids=[0, 1, 2, 3],
100
+ leaf_weights=make_tensor(
101
+ "leaf_weights", onnx.TensorProto.FLOAT, (4,), [1, 10, 1000, 100]
102
+ ),
103
+ )
104
+
105
+ x = np.array([1.2, 3.4, -0.12, np.nan, 12, 7], np.float32).reshape(-1, 1)
106
+ expected = np.array(
107
+ [
108
+ [1, 0, 0, 0],
109
+ [0, 0, 0, 100],
110
+ [0, 0, 0, 100],
111
+ [0, 0, 1000, 0],
112
+ [0, 0, 1000, 0],
113
+ [0, 10, 0, 0],
114
+ ],
115
+ dtype=np.float32,
116
+ )
117
+ expect(
118
+ node,
119
+ inputs=[x],
120
+ outputs=[expected],
121
+ name="test_ai_onnx_ml_tree_ensemble_set_membership",
122
+ )
@@ -18,8 +18,7 @@ from onnx.reference.ops.op_pool_common import (
18
18
  class AveragePool(Base):
19
19
  @staticmethod
20
20
  def export_averagepool_2d_precomputed_pads() -> None:
21
- """
22
- input_shape: [1, 1, 5, 5]
21
+ """input_shape: [1, 1, 5, 5]
23
22
  output_shape: [1, 1, 5, 5]
24
23
  pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
25
24
  """
@@ -63,8 +62,7 @@ class AveragePool(Base):
63
62
 
64
63
  @staticmethod
65
64
  def export_averagepool_2d_precomputed_pads_count_include_pad() -> None:
66
- """
67
- input_shape: [1, 1, 5, 5]
65
+ """input_shape: [1, 1, 5, 5]
68
66
  output_shape: [1, 1, 5, 5]
69
67
  pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
70
68
  """
@@ -112,8 +110,7 @@ class AveragePool(Base):
112
110
 
113
111
  @staticmethod
114
112
  def export_averagepool_2d_precomputed_strides() -> None:
115
- """
116
- input_shape: [1, 1, 5, 5]
113
+ """input_shape: [1, 1, 5, 5]
117
114
  output_shape: [1, 1, 2, 2]
118
115
  """
119
116
  node = onnx.helper.make_node(
@@ -147,8 +144,7 @@ class AveragePool(Base):
147
144
 
148
145
  @staticmethod
149
146
  def export_averagepool_2d_precomputed_same_upper() -> None:
150
- """
151
- input_shape: [1, 1, 5, 5]
147
+ """input_shape: [1, 1, 5, 5]
152
148
  output_shape: [1, 1, 3, 3]
153
149
  pad_shape: [2, 2] -> [1, 1, 1, 1] by axis
154
150
  """
@@ -186,8 +182,7 @@ class AveragePool(Base):
186
182
 
187
183
  @staticmethod
188
184
  def export_averagepool_1d_default() -> None:
189
- """
190
- input_shape: [1, 3, 32]
185
+ """input_shape: [1, 3, 32]
191
186
  output_shape: [1, 3, 31]
192
187
  """
193
188
  node = onnx.helper.make_node(
@@ -211,8 +206,7 @@ class AveragePool(Base):
211
206
 
212
207
  @staticmethod
213
208
  def export_averagepool_2d_default() -> None:
214
- """
215
- input_shape: [1, 3, 32, 32]
209
+ """input_shape: [1, 3, 32, 32]
216
210
  output_shape: [1, 3, 31, 31]
217
211
  """
218
212
  node = onnx.helper.make_node(
@@ -236,8 +230,7 @@ class AveragePool(Base):
236
230
 
237
231
  @staticmethod
238
232
  def export_averagepool_3d_default() -> None:
239
- """
240
- input_shape: [1, 3, 32, 32, 32]
233
+ """input_shape: [1, 3, 32, 32, 32]
241
234
  output_shape: [1, 3, 31, 31, 31]
242
235
  """
243
236
  node = onnx.helper.make_node(
@@ -261,8 +254,7 @@ class AveragePool(Base):
261
254
 
262
255
  @staticmethod
263
256
  def export_averagepool_2d_same_upper() -> None:
264
- """
265
- input_shape: [1, 3, 32, 32]
257
+ """input_shape: [1, 3, 32, 32]
266
258
  output_shape: [1, 3, 32, 32]
267
259
  pad_shape: [1, 1] -> [0, 1, 0, 1] by axis
268
260
  """
@@ -300,8 +292,7 @@ class AveragePool(Base):
300
292
 
301
293
  @staticmethod
302
294
  def export_averagepool_2d_same_lower() -> None:
303
- """
304
- input_shape: [1, 3, 32, 32]
295
+ """input_shape: [1, 3, 32, 32]
305
296
  output_shape: [1, 3, 32, 32]
306
297
  pad_shape: [1, 1] -> [1, 0, 1, 0] by axis
307
298
  """
@@ -339,8 +330,7 @@ class AveragePool(Base):
339
330
 
340
331
  @staticmethod
341
332
  def export_averagepool_2d_pads() -> None:
342
- """
343
- input_shape: [1, 3, 28, 28]
333
+ """input_shape: [1, 3, 28, 28]
344
334
  output_shape: [1, 3, 30, 30]
345
335
  pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
346
336
  """
@@ -375,8 +365,7 @@ class AveragePool(Base):
375
365
 
376
366
  @staticmethod
377
367
  def export_averagepool_2d_pads_count_include_pad() -> None:
378
- """
379
- input_shape: [1, 3, 28, 28]
368
+ """input_shape: [1, 3, 28, 28]
380
369
  output_shape: [1, 3, 30, 30]
381
370
  pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
382
371
  """
@@ -427,8 +416,7 @@ class AveragePool(Base):
427
416
 
428
417
  @staticmethod
429
418
  def export_averagepool_2d_strides() -> None:
430
- """
431
- input_shape: [1, 3, 32, 32]
419
+ """input_shape: [1, 3, 32, 32]
432
420
  output_shape: [1, 3, 10, 10]
433
421
  """
434
422
  node = onnx.helper.make_node(
@@ -452,8 +440,7 @@ class AveragePool(Base):
452
440
 
453
441
  @staticmethod
454
442
  def export_averagepool_2d_ceil() -> None:
455
- """
456
- input_shape: [1, 1, 4, 4]
443
+ """input_shape: [1, 1, 4, 4]
457
444
  output_shape: [1, 1, 2, 2]
458
445
  """
459
446
  node = onnx.helper.make_node(
@@ -482,8 +469,7 @@ class AveragePool(Base):
482
469
 
483
470
  @staticmethod
484
471
  def export_averagepool_2d_dilations() -> None:
485
- """
486
- input_shape: [1, 1, 4, 4]
472
+ """input_shape: [1, 1, 4, 4]
487
473
  output_shape: [1, 1, 2, 2]
488
474
  """
489
475
  node = onnx.helper.make_node(
@@ -516,8 +502,7 @@ class AveragePool(Base):
516
502
 
517
503
  @staticmethod
518
504
  def export_averagepool_3d_dilations() -> None:
519
- """
520
- input_shape: [1, 1, 4, 4]
505
+ """input_shape: [1, 1, 4, 4]
521
506
  output_shape: [1, 1, 2, 2]
522
507
  """
523
508
  node = onnx.helper.make_node(
@@ -7,7 +7,8 @@ import sys
7
7
  import numpy as np
8
8
 
9
9
  import onnx
10
- from onnx import TensorProto, helper
10
+ import onnx.reference.custom_element_types as custom
11
+ from onnx import TensorProto, helper, subbyte
11
12
  from onnx.backend.test.case.base import Base
12
13
  from onnx.backend.test.case.node import expect
13
14
  from onnx.helper import (
@@ -50,10 +51,27 @@ class Cast(Base):
50
51
  ("FLOAT8E5M2", "FLOAT16"),
51
52
  ("FLOAT8E5M2FNUZ", "FLOAT"),
52
53
  ("FLOAT8E5M2FNUZ", "FLOAT16"),
54
+ ("FLOAT", "UINT4"),
55
+ ("FLOAT16", "UINT4"),
56
+ ("FLOAT", "INT4"),
57
+ ("FLOAT16", "INT4"),
58
+ ("UINT4", "FLOAT"),
59
+ ("UINT4", "FLOAT16"),
60
+ ("UINT4", "UINT8"),
61
+ ("INT4", "FLOAT"),
62
+ ("INT4", "FLOAT16"),
63
+ ("INT4", "INT8"),
53
64
  ]
54
65
 
55
66
  vect_float32_to_float8e4m3 = np.vectorize(float32_to_float8e4m3)
56
67
  vect_float32_to_float8e5m2 = np.vectorize(float32_to_float8e5m2)
68
+ vect_float32_to_uint4 = np.vectorize(
69
+ lambda x: subbyte.float32_to_4bit_unpacked(x, signed=False)
70
+ )
71
+ vect_float32_to_int4 = np.vectorize(
72
+ lambda x: subbyte.float32_to_4bit_unpacked(x, signed=True)
73
+ )
74
+
57
75
  f8_types = ("FLOAT8E4M3FN", "FLOAT8E4M3FNUZ", "FLOAT8E5M2", "FLOAT8E5M2FNUZ")
58
76
 
59
77
  for from_type, to_type in test_cases:
@@ -124,6 +142,9 @@ class Cast(Base):
124
142
  "INF",
125
143
  "+INF",
126
144
  "-INF",
145
+ "-0.0000001",
146
+ "0.0000001",
147
+ "-1000000",
127
148
  ],
128
149
  dtype=np.float32,
129
150
  )
@@ -131,33 +152,33 @@ class Cast(Base):
131
152
  if from_type == "FLOAT":
132
153
  input_values = np_fp32
133
154
  input = make_tensor(
134
- "x", TensorProto.FLOAT, [3, 4], np_fp32.tolist()
155
+ "x", TensorProto.FLOAT, [3, 5], np_fp32.tolist()
135
156
  )
136
157
  elif from_type == "FLOAT16":
137
158
  input_values = np_fp32.astype(np.float16).astype(np.float32)
138
159
  input = make_tensor(
139
- "x", TensorProto.FLOAT16, [3, 4], input_values.tolist()
160
+ "x", TensorProto.FLOAT16, [3, 5], input_values.tolist()
140
161
  )
141
162
  elif from_type == "FLOAT8E4M3FN":
142
163
  input_values = float8e4m3_to_float32(
143
164
  vect_float32_to_float8e4m3(np_fp32)
144
165
  )
145
166
  input = make_tensor(
146
- "x", TensorProto.FLOAT8E4M3FN, [3, 4], input_values.tolist()
167
+ "x", TensorProto.FLOAT8E4M3FN, [3, 5], input_values.tolist()
147
168
  )
148
169
  elif from_type == "FLOAT8E4M3FNUZ":
149
170
  input_values = float8e4m3_to_float32(
150
171
  vect_float32_to_float8e4m3(np_fp32, uz=True), uz=True
151
172
  )
152
173
  input = make_tensor(
153
- "x", TensorProto.FLOAT8E4M3FNUZ, [3, 4], input_values.tolist()
174
+ "x", TensorProto.FLOAT8E4M3FNUZ, [3, 5], input_values.tolist()
154
175
  )
155
176
  elif from_type == "FLOAT8E5M2":
156
177
  input_values = float8e5m2_to_float32(
157
178
  vect_float32_to_float8e5m2(np_fp32)
158
179
  )
159
180
  input = make_tensor(
160
- "x", TensorProto.FLOAT8E5M2, [3, 4], input_values.tolist()
181
+ "x", TensorProto.FLOAT8E5M2, [3, 5], input_values.tolist()
161
182
  )
162
183
  elif from_type == "FLOAT8E5M2FNUZ":
163
184
  input_values = float8e5m2_to_float32(
@@ -166,7 +187,7 @@ class Cast(Base):
166
187
  uz=True,
167
188
  )
168
189
  input = make_tensor(
169
- "x", TensorProto.FLOAT8E5M2FNUZ, [3, 4], input_values.tolist()
190
+ "x", TensorProto.FLOAT8E5M2FNUZ, [3, 5], input_values.tolist()
170
191
  )
171
192
  else:
172
193
  raise ValueError(
@@ -200,9 +221,62 @@ class Cast(Base):
200
221
  "Conversion from {from_type} to {to_type} is not tested."
201
222
  )
202
223
  expected_tensor = make_tensor(
203
- "x", getattr(TensorProto, to_type), [3, 4], expected.tolist()
224
+ "x", getattr(TensorProto, to_type), [3, 5], expected.tolist()
225
+ )
226
+ output = expected_tensor
227
+ elif from_type in ("UINT4", "INT4") or to_type in ("UINT4", "INT4"):
228
+ np_fp32 = np.arange(-9, 16).astype(np.float32)
229
+ input_shape = (5, 5)
230
+ if from_type == "FLOAT":
231
+ input_values = np_fp32
232
+ input = make_tensor(
233
+ "x", TensorProto.FLOAT, input_shape, input_values.tolist()
234
+ )
235
+ elif from_type == "FLOAT16":
236
+ input_values = np_fp32.astype(np.float16)
237
+ input = make_tensor(
238
+ "x", TensorProto.FLOAT16, input_shape, input_values.tolist()
239
+ )
240
+ elif from_type == "UINT4":
241
+ input_values = vect_float32_to_uint4(np_fp32)
242
+ input = make_tensor(
243
+ "x", TensorProto.UINT4, input_shape, input_values.tolist()
244
+ )
245
+ elif from_type == "INT4":
246
+ input_values = vect_float32_to_int4(np_fp32)
247
+ input = make_tensor(
248
+ "x", TensorProto.INT4, input_shape, input_values.tolist()
249
+ )
250
+ else:
251
+ raise ValueError(
252
+ "Conversion from {from_type} to {to_type} is not tested."
253
+ )
254
+ if to_type == "UINT4":
255
+ expected = vect_float32_to_uint4(input_values).astype(custom.uint4)
256
+ elif to_type == "INT4":
257
+ expected = vect_float32_to_int4(input_values).astype(custom.int4)
258
+ elif to_type == "FLOAT16":
259
+ expected = input_values.astype(np.float16)
260
+ elif to_type == "FLOAT":
261
+ expected = input_values
262
+ elif to_type == "UINT8":
263
+ expected = input_values.astype(np.uint8)
264
+ elif to_type == "INT8":
265
+ expected = input_values.astype(np.int8)
266
+ else:
267
+ raise ValueError(
268
+ "Conversion from {from_type} to {to_type} is not tested."
269
+ )
270
+ expected_tensor = make_tensor(
271
+ "y", getattr(TensorProto, to_type), input_shape, expected.tolist()
204
272
  )
205
273
  output = expected_tensor
274
+ input_type_proto = onnx.helper.make_tensor_type_proto(
275
+ getattr(TensorProto, from_type), input_shape
276
+ )
277
+ output_type_proto = onnx.helper.make_tensor_type_proto(
278
+ getattr(TensorProto, to_type), input_shape
279
+ )
206
280
 
207
281
  elif from_type != "STRING":
208
282
  input = np.random.random_sample(shape).astype(
@@ -295,17 +369,20 @@ class Cast(Base):
295
369
  "INF",
296
370
  "+INF",
297
371
  "-INF",
372
+ "-0.0000001",
373
+ "0.0000001",
374
+ "-1000000",
298
375
  ],
299
376
  dtype=np.float32,
300
377
  )
301
378
 
302
379
  if from_type == "FLOAT":
303
380
  input_values = np_fp32
304
- input = make_tensor("x", TensorProto.FLOAT, [3, 4], np_fp32.tolist())
381
+ input = make_tensor("x", TensorProto.FLOAT, [3, 5], np_fp32.tolist())
305
382
  elif from_type == "FLOAT16":
306
383
  input_values = np_fp32.astype(np.float16).astype(np.float32)
307
384
  input = make_tensor(
308
- "x", TensorProto.FLOAT16, [3, 4], input_values.tolist()
385
+ "x", TensorProto.FLOAT16, [3, 5], input_values.tolist()
309
386
  )
310
387
  else:
311
388
  raise ValueError(
@@ -333,7 +410,7 @@ class Cast(Base):
333
410
  tensor = TensorProto()
334
411
  tensor.data_type = getattr(TensorProto, to_type)
335
412
  tensor.name = "x"
336
- tensor.dims.extend([3, 4])
413
+ tensor.dims.extend([3, 5])
337
414
  field = tensor_dtype_to_field(tensor.data_type)
338
415
  getattr(tensor, field).extend(ivals)
339
416