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
@@ -14,12 +14,14 @@ from onnx import TensorProto, helper
14
14
  # to the most recent version and runs checker and shape inference on the final upgraded model.
15
15
  ####################################################################################
16
16
 
17
- tested_ops = []
18
-
19
17
 
20
18
  class TestAutomaticUpgrade(automatic_conversion_test_base.TestAutomaticConversion):
19
+ @classmethod
20
+ def setUpClass(cls):
21
+ cls.tested_ops = []
22
+
21
23
  def _test_op_upgrade(self, op, *args, **kwargs):
22
- tested_ops.append(op)
24
+ self.tested_ops.append(op)
23
25
  self._test_op_conversion(op, *args, **kwargs, is_upgrade=True)
24
26
 
25
27
  def test_Abs(self) -> None:
@@ -1739,9 +1741,10 @@ class TestAutomaticUpgrade(automatic_conversion_test_base.TestAutomaticConversio
1739
1741
  )
1740
1742
 
1741
1743
  def test_ops_tested(self) -> None:
1744
+ # NOTE: This test is order dependent and needs to run last in this class
1742
1745
  all_schemas = onnx.defs.get_all_schemas()
1743
- all_op_names = [schema.name for schema in all_schemas if schema.domain == ""]
1744
- excluded_ops = [
1746
+ all_op_names = {schema.name for schema in all_schemas if schema.domain == ""}
1747
+ excluded_ops = {
1745
1748
  # Sequence-based and Optional-based ops disabled because
1746
1749
  # the version converter doesn't play nicely with sequences
1747
1750
  "ConcatFromSequence",
@@ -1757,12 +1760,11 @@ class TestAutomaticUpgrade(automatic_conversion_test_base.TestAutomaticConversio
1757
1760
  "OptionalGetElement",
1758
1761
  "OptionalHasElement",
1759
1762
  "StringSplit",
1760
- ]
1761
- all_op_names = [op for op in all_op_names if op not in excluded_ops]
1763
+ }
1764
+ expected_tested_ops = all_op_names - excluded_ops
1762
1765
 
1763
- untested_ops = set(all_op_names) - set(tested_ops)
1764
- print(untested_ops)
1765
- assert len(untested_ops) == 0
1766
+ untested_ops = expected_tested_ops - set(self.tested_ops)
1767
+ self.assertEqual(untested_ops, set())
1766
1768
 
1767
1769
 
1768
1770
  if __name__ == "__main__":
@@ -2,10 +2,13 @@
2
2
 
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
+ import contextlib
5
6
  import struct
6
7
  import unittest
8
+ from typing import Optional, Tuple
7
9
 
8
10
  import numpy as np
11
+ import parameterized
9
12
 
10
13
  import onnx.version_converter
11
14
  from onnx import (
@@ -1984,6 +1987,169 @@ class TestVersionConverter(unittest.TestCase):
1984
1987
  assert converted_model.graph.node[3].op_type == "Reshape"
1985
1988
  assert converted_model.opset_import[0].version == 13
1986
1989
 
1990
+ @parameterized.parameterized.expand(
1991
+ [
1992
+ ("per_tensor", (16, 3), (1,), None, None, None, TensorProto.INT8, True),
1993
+ (
1994
+ "per_axis_none_block_shape",
1995
+ (16, 3),
1996
+ (16,),
1997
+ 1,
1998
+ None,
1999
+ None,
2000
+ TensorProto.INT8,
2001
+ True,
2002
+ ),
2003
+ (
2004
+ "per_axis_zero_block_shape",
2005
+ (16, 3),
2006
+ (16,),
2007
+ 1,
2008
+ 0,
2009
+ None,
2010
+ TensorProto.INT8,
2011
+ True,
2012
+ ),
2013
+ (
2014
+ "per_tensor_positive_block_shape",
2015
+ (16, 3),
2016
+ (1,),
2017
+ 1,
2018
+ 2,
2019
+ None,
2020
+ TensorProto.INT8,
2021
+ False,
2022
+ ),
2023
+ (
2024
+ "per_axis_positive_block_shape",
2025
+ (16, 3),
2026
+ (16,),
2027
+ 1,
2028
+ 2,
2029
+ None,
2030
+ TensorProto.INT8,
2031
+ False,
2032
+ ),
2033
+ ("blocked_2d", (16, 3), (4, 3), 0, 4, None, TensorProto.INT8, False),
2034
+ ("blocked_3d", (4, 3, 32), (4, 3, 8), 2, 4, None, TensorProto.INT8, False),
2035
+ (
2036
+ "per_axis_output_dtype",
2037
+ (16, 3),
2038
+ (16,),
2039
+ 1,
2040
+ None,
2041
+ TensorProto.FLOAT8E4M3FN,
2042
+ None,
2043
+ False,
2044
+ ),
2045
+ (
2046
+ "per_axis_unsupported_type",
2047
+ (16, 3),
2048
+ (16,),
2049
+ 1,
2050
+ None,
2051
+ None,
2052
+ TensorProto.UINT16,
2053
+ False,
2054
+ ),
2055
+ ]
2056
+ )
2057
+ def test_quantize_21_20(
2058
+ self,
2059
+ _: str,
2060
+ x_shape: Tuple[int, ...],
2061
+ scale_shape: Tuple[int, ...],
2062
+ axis: int,
2063
+ block_size: int,
2064
+ output_dtype: Optional[int],
2065
+ zero_point_dtype: Optional[int],
2066
+ compatible: bool,
2067
+ ) -> None:
2068
+ def test(
2069
+ input_shape, scale_shape, axis, block_size, output_dtype, zero_point_dtype
2070
+ ) -> None:
2071
+ nodes = [
2072
+ helper.make_node(
2073
+ "QuantizeLinear",
2074
+ ["X", "S"],
2075
+ ["Y"],
2076
+ axis=axis,
2077
+ block_size=block_size,
2078
+ output_dtype=output_dtype,
2079
+ )
2080
+ ]
2081
+ inputs = [
2082
+ helper.make_tensor_value_info("X", TensorProto.FLOAT, input_shape),
2083
+ helper.make_tensor_value_info("S", TensorProto.FLOAT, scale_shape),
2084
+ ]
2085
+ if zero_point_dtype:
2086
+ inputs.append(
2087
+ helper.make_tensor_value_info("ZP", zero_point_dtype, scale_shape)
2088
+ )
2089
+ nodes[0].input.append("ZP")
2090
+ output_type_ = output_dtype or zero_point_dtype
2091
+ graph = helper.make_graph(
2092
+ nodes,
2093
+ "test",
2094
+ inputs,
2095
+ [helper.make_tensor_value_info("Y", output_type_, input_shape)],
2096
+ )
2097
+ _ = self._converted(graph, helper.make_operatorsetid("", 21), 20)
2098
+
2099
+ context_manager = (
2100
+ contextlib.nullcontext() if compatible else self.assertRaises(RuntimeError)
2101
+ )
2102
+ with context_manager: # type: ignore[attr-defined]
2103
+ test(x_shape, scale_shape, axis, block_size, output_dtype, zero_point_dtype)
2104
+
2105
+ @parameterized.parameterized.expand(
2106
+ [
2107
+ ("per_tensor", (16, 3), (1,), None, None, True),
2108
+ ("per_axis_none_block_shape", (16, 3), (16,), 1, None, True),
2109
+ ("per_axis_zero_block_shape", (16, 3), (16,), 1, 0, True),
2110
+ ("per_tensor_positive_block_shape", (16, 3), (1,), 1, 2, False),
2111
+ ("per_axis_positive_block_shape", (16, 3), (16,), 1, 2, False),
2112
+ ("blocked_2d", (16, 3), (4, 3), 0, 4, False),
2113
+ ("blocked_3d", (4, 3, 32), (4, 3, 8), 2, 4, False),
2114
+ ]
2115
+ )
2116
+ def test_dequantize_21_20(
2117
+ self,
2118
+ _: str,
2119
+ y_shape: Tuple[int, ...],
2120
+ scale_shape: Tuple[int, ...],
2121
+ axis: int,
2122
+ block_size: int,
2123
+ compatible: bool,
2124
+ ) -> None:
2125
+ def test(input_shape, scale_shape, axis, block_size) -> None:
2126
+ nodes = [
2127
+ helper.make_node(
2128
+ "DequantizeLinear",
2129
+ ["X", "S", "ZP"],
2130
+ ["Y"],
2131
+ axis=axis,
2132
+ block_size=block_size,
2133
+ )
2134
+ ]
2135
+ graph = helper.make_graph(
2136
+ nodes,
2137
+ "test",
2138
+ [
2139
+ helper.make_tensor_value_info("X", TensorProto.INT8, input_shape),
2140
+ helper.make_tensor_value_info("S", TensorProto.FLOAT, scale_shape),
2141
+ helper.make_tensor_value_info("ZP", TensorProto.INT8, scale_shape),
2142
+ ],
2143
+ [helper.make_tensor_value_info("Y", TensorProto.FLOAT, input_shape)],
2144
+ )
2145
+ _ = self._converted(graph, helper.make_operatorsetid("", 21), 20)
2146
+
2147
+ context_manager = (
2148
+ contextlib.nullcontext() if compatible else self.assertRaises(RuntimeError)
2149
+ )
2150
+ with context_manager: # type: ignore[attr-defined]
2151
+ test(y_shape, scale_shape, axis, block_size)
2152
+
1987
2153
 
1988
2154
  if __name__ == "__main__":
1989
2155
  unittest.main()
@@ -31,10 +31,7 @@ from onnx.numpy_helper import from_array
31
31
  def _replace_constant(
32
32
  node: NodeProto, threshold: int, value_constant_of_shape: float
33
33
  ) -> List[NodeProto]:
34
- """
35
- Replaces a Constant node with a large tensor (with more than threshold elements)
36
- by a sequence of nodes that produces a dummy constant of same shape as original tensor.
37
- """
34
+ """Replaces a Constant node with a large tensor (with more than threshold elements) by a sequence of nodes that produces a dummy constant of same shape as original tensor."""
38
35
  if node.op_type != "Constant":
39
36
  raise TypeError(f"Node type must be 'Constant' not {node.op_type!r}.")
40
37
  for att in node.attribute:
@@ -74,12 +71,11 @@ def _replace_constant(
74
71
  def _replace_constant_of_shape_with_range(
75
72
  onx: Union[GraphProto, FunctionProto]
76
73
  ) -> Union[GraphProto, FunctionProto]:
77
- """
78
- Replaces all *ConstantOfShape* by node *Range* to avoid constant tensors.
74
+ """Replaces all *ConstantOfShape* by node *Range* to avoid constant tensors.
75
+
79
76
  The function is not recursive. The recursivity is done by
80
77
  *replace_initializer_by_constant_of_shape*.
81
78
  """
82
-
83
79
  if isinstance(onx, GraphProto):
84
80
  nodes = list(onx.node)
85
81
  elif isinstance(onx, FunctionProto):
@@ -163,11 +159,7 @@ def _replace_constant_of_shape_with_range(
163
159
  def _replace_constant_of_shape_value(
164
160
  onx: Union[GraphProto, FunctionProto], value_constant_of_shape: float
165
161
  ) -> Union[GraphProto, FunctionProto]:
166
- """
167
- Replaces all fill value of all nodes *ConstantOfShape*.
168
- *replace_initializer_by_constant_of_shape*.
169
- """
170
-
162
+ """Replaces all fill value of all nodes *ConstantOfShape*."""
171
163
  if isinstance(onx, GraphProto):
172
164
  nodes = list(onx.node)
173
165
  elif isinstance(onx, FunctionProto):
@@ -226,20 +218,25 @@ def replace_initializer_by_constant_of_shape( # noqa: PLR0911
226
218
  use_range: bool = False,
227
219
  value_constant_of_shape: float = 0.5,
228
220
  ):
229
- """
230
- Replace initializers or constant node by nodes *ConstantOfShape* to reduce
231
- the size. This reduce the cost to write a unit test about
232
- a specific graph structure.
233
-
234
- :param onx: ModelProto
235
- :param threshold: every initializer under this threshold is not impacted
236
- :param ir_version: initializer must be specified as input for `ir_version <= 3`,
237
- this must be specified if onx is :class:`FunctionProto` or :class:`GraphProto`
238
- :param use_range: if uses operator *Range* instead of *ConstantOfShape* to avoid
239
- constant tensors
240
- :param value_constant_of_shape: value to use as a value for all nodes *ConstantOfShape*,
241
- a high value may produce nan or inf predictions
242
- :return: onx, modified ModelProto
221
+ """Replace initializers or constant node by nodes *ConstantOfShape* to reduce the size.
222
+
223
+ This reduce the cost to write a unit test about a specific graph structure.
224
+
225
+ Args:
226
+ onx: ModelProto
227
+ threshold: every initializer under this threshold is not
228
+ impacted
229
+ ir_version: initializer must be specified as input for
230
+ `ir_version <= 3`, this must be specified if onx is
231
+ :class:`FunctionProto` or :class:`GraphProto`
232
+ use_range: if uses operator *Range* instead of *ConstantOfShape*
233
+ to avoid constant tensors
234
+ value_constant_of_shape: value to use as a value for all nodes
235
+ *ConstantOfShape*, a high value may produce nan or inf
236
+ predictions
237
+
238
+ Returns:
239
+ onx, modified ModelProto
243
240
 
244
241
  The function is designed so that the function can be reapplied on a modified model
245
242
  and either replace *ConstantOfShape* with *Range* operators, either replace the fill value
@@ -13,8 +13,7 @@ def update_inputs_outputs_dims(
13
13
  input_dims: Dict[str, List[Any]],
14
14
  output_dims: Dict[str, List[Any]],
15
15
  ) -> ModelProto:
16
- """
17
- This function updates the dimension sizes of the model's inputs and outputs to the values
16
+ """This function updates the dimension sizes of the model's inputs and outputs to the values
18
17
  provided in input_dims and output_dims. if the dim value provided is negative, a unique dim_param
19
18
  will be set for that dimension.
20
19
 
onnx/version.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # This file is generated by setup.py. DO NOT EDIT!
2
2
 
3
3
 
4
- version = "1.15.0"
5
- git_version = "b86cc54efce19530fb953e4b21f57e6b3888534c"
4
+ version = "1.16.1"
5
+ git_version = "595228d99e3977ac27cb79d5963adda262af99ad"
@@ -0,0 +1,128 @@
1
+ // Copyright (c) ONNX Project Contributors
2
+
3
+ /*
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // Adapter for GroupNormalization in default domain from version 20 to 21
8
+
9
+ #pragma once
10
+
11
+ #include <memory>
12
+
13
+ #include "onnx/version_converter/adapters/adapter.h"
14
+
15
+ namespace ONNX_NAMESPACE {
16
+ namespace version_conversion {
17
+
18
+ class GroupNormalization_20_21 final : public Adapter {
19
+ public:
20
+ explicit GroupNormalization_20_21() : Adapter("GroupNormalization", OpSetID(20), OpSetID(21)) {}
21
+
22
+ void transform_input(
23
+ std::shared_ptr<Graph> graph,
24
+ Node* node,
25
+ int64_t input_id,
26
+ Value* reshape0_shape,
27
+ Value* reshape1_shape,
28
+ Value* expand_shape) const {
29
+ Node* reshape0 = graph->create(kReshape);
30
+ reshape0->addInput(node->inputs()[input_id]);
31
+ reshape0->addInput(reshape0_shape);
32
+ reshape0->insertBefore(node);
33
+
34
+ Node* expand = graph->create(kExpand);
35
+ expand->addInput(reshape0->output());
36
+ expand->addInput(expand_shape);
37
+ expand->insertBefore(node);
38
+
39
+ Node* reshape1 = graph->create(kReshape);
40
+ reshape1->addInput(expand->output());
41
+ reshape1->addInput(reshape1_shape);
42
+ reshape1->insertBefore(node);
43
+
44
+ node->replaceInput(input_id, reshape1->output());
45
+ }
46
+
47
+ void adapt_group_normalization_20_21(std::shared_ptr<Graph> graph, Node* node) const {
48
+ // Perform following sequence of ops on scale/bias, effect is similar to numpy.repeat()
49
+ //
50
+ // Shape<start=1,end=2>(input0) -- Div(Shape_out (C), num_groups)
51
+ // |
52
+ // Reshape(input1/2, [-1, 1]) ----------- Expand(Reshape_out, [1, Div_out]) -- Reshape(Expand_out, [-1])
53
+ //
54
+ // The helper function transform_input() implements the bottom row of the diagram
55
+
56
+ // Get number of channels: C
57
+ Symbol kShape("Shape");
58
+ Node* C = graph->create(kShape);
59
+ C->i_(kstart, 1);
60
+ C->i_(kend, 2);
61
+ C->addInput(node->inputs()[0]);
62
+ C->insertBefore(node);
63
+
64
+ // Get number of channels per group
65
+ Tensor tensor_num_groups;
66
+ tensor_num_groups.elem_type() = TensorProto_DataType_INT64;
67
+ int64_t num_groups = node->i(knum_groups);
68
+ tensor_num_groups.sizes() = {1};
69
+ tensor_num_groups.int64s() = {num_groups};
70
+ Node* constant_num_groups = graph->create(kConstant);
71
+ constant_num_groups->t_(kvalue, tensor_num_groups);
72
+ constant_num_groups->insertBefore(node);
73
+
74
+ Node* div = graph->create(kDiv);
75
+ div->addInput(C->output());
76
+ div->addInput(constant_num_groups->output());
77
+ div->insertBefore(node);
78
+
79
+ // Get Expand shape: [1, Div_out]
80
+ Tensor tensor_one;
81
+ tensor_one.elem_type() = TensorProto_DataType_INT64;
82
+ tensor_one.sizes() = {1};
83
+ tensor_one.int64s() = {1};
84
+ Node* constant_one = graph->create(kConstant);
85
+ constant_one->t_(kvalue, tensor_one);
86
+ constant_one->insertBefore(node);
87
+ Node* concat = graph->create(kConcat);
88
+ concat->i_(kaxis, 0);
89
+ concat->addInput(constant_one->output());
90
+ concat->addInput(div->output());
91
+ concat->insertBefore(node);
92
+
93
+ // Get shape of first reshape: [-1, 1]
94
+ Tensor tensor_reshape0_shape;
95
+ tensor_reshape0_shape.elem_type() = TensorProto_DataType_INT64;
96
+ tensor_reshape0_shape.sizes() = {2};
97
+ tensor_reshape0_shape.int64s() = {-1, 1};
98
+ Node* constant_reshape0_shape = graph->create(kConstant);
99
+ constant_reshape0_shape->t_(kvalue, tensor_reshape0_shape);
100
+ constant_reshape0_shape->insertBefore(node);
101
+
102
+ // Get shape of last reshape: [-1]
103
+ Tensor tensor_reshape1_shape;
104
+ tensor_reshape1_shape.elem_type() = TensorProto_DataType_INT64;
105
+ tensor_reshape1_shape.sizes() = {1};
106
+ tensor_reshape1_shape.int64s() = {-1};
107
+ Node* constant_reshape1_shape = graph->create(kConstant);
108
+ constant_reshape1_shape->t_(kvalue, tensor_reshape1_shape);
109
+ constant_reshape1_shape->insertBefore(node);
110
+
111
+ // transform scale and bias
112
+ transform_input(
113
+ graph, node, 1, constant_reshape0_shape->output(), constant_reshape1_shape->output(), concat->output());
114
+ transform_input(
115
+ graph, node, 2, constant_reshape0_shape->output(), constant_reshape1_shape->output(), concat->output());
116
+
117
+ // Set stash_type
118
+ node->i_(kstash_type, node->inputs()[0]->elemType());
119
+ }
120
+
121
+ Node* adapt(std::shared_ptr<Graph> graph, Node* node) const override {
122
+ adapt_group_normalization_20_21(graph, node);
123
+ return node;
124
+ }
125
+ };
126
+
127
+ } // namespace version_conversion
128
+ } // namespace ONNX_NAMESPACE
@@ -0,0 +1,77 @@
1
+ // Copyright (c) ONNX Project Contributors
2
+
3
+ /*
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // Adapter for Cast in default domain from version 9 to 8
8
+
9
+ #pragma once
10
+
11
+ #include <memory>
12
+ #include <vector>
13
+
14
+ #include "onnx/version_converter/adapters/type_restriction.h"
15
+
16
+ namespace ONNX_NAMESPACE {
17
+ namespace version_conversion {
18
+
19
+ static const std::vector<TensorProto_DataType> q_dq_20_unallowed_types = {
20
+ TensorProto_DataType_UINT16,
21
+ TensorProto_DataType_INT16,
22
+ TensorProto_DataType_UINT4,
23
+ TensorProto_DataType_INT4};
24
+
25
+ class QuantizeLinear_21_20 final : public TypeRestriction {
26
+ public:
27
+ explicit QuantizeLinear_21_20()
28
+ : TypeRestriction("QuantizeLinear", OpSetID(21), OpSetID(20), q_dq_20_unallowed_types) {}
29
+
30
+ void adapt_quantize_linear_21_20(std::shared_ptr<Graph>, Node* node) const {
31
+ if (node->hasAttribute(kblock_size)) {
32
+ if ((node->i(kblock_size) != 0)) {
33
+ ONNX_ASSERTM(false, "Blocked quantization is not supported for Opset Version %d.", target_version().version())
34
+ }
35
+ node->removeAttribute(kblock_size);
36
+ }
37
+ if (node->hasAttribute(koutput_dtype)) {
38
+ if (node->i(koutput_dtype) != TensorProto_DataType_UINT8 && node->inputs().size() < 3) {
39
+ ONNX_ASSERTM(
40
+ false,
41
+ "Attribute output_dtype is not supported for Opset Version %d, supply a zero-point tensor instead",
42
+ target_version().version())
43
+ }
44
+ node->removeAttribute(koutput_dtype);
45
+ }
46
+ }
47
+
48
+ Node* adapt(std::shared_ptr<Graph> graph, Node* node) const override {
49
+ adapt_type_restriction(graph, node);
50
+ adapt_quantize_linear_21_20(graph, node);
51
+ return node;
52
+ }
53
+ };
54
+
55
+ class DequantizeLinear_21_20 final : public TypeRestriction {
56
+ public:
57
+ explicit DequantizeLinear_21_20()
58
+ : TypeRestriction("DequantizeLinear", OpSetID(21), OpSetID(20), q_dq_20_unallowed_types) {}
59
+
60
+ void adapt_dequantize_linear_21_20(std::shared_ptr<Graph>, Node* node) const {
61
+ if (node->hasAttribute(kblock_size)) {
62
+ if ((node->i(kblock_size) != 0)) {
63
+ ONNX_ASSERTM(false, "Blocked quantization is not supported for Opset Version %d.", target_version().version())
64
+ }
65
+ node->removeAttribute(kblock_size);
66
+ }
67
+ }
68
+
69
+ Node* adapt(std::shared_ptr<Graph> graph, Node* node) const override {
70
+ adapt_type_restriction(graph, node);
71
+ adapt_dequantize_linear_21_20(graph, node);
72
+ return node;
73
+ }
74
+ };
75
+
76
+ } // namespace version_conversion
77
+ } // namespace ONNX_NAMESPACE
@@ -32,9 +32,11 @@
32
32
  #include "onnx/version_converter/adapters/gemm_6_7.h"
33
33
  #include "onnx/version_converter/adapters/gemm_7_6.h"
34
34
  #include "onnx/version_converter/adapters/gridsample_19_20.h"
35
+ #include "onnx/version_converter/adapters/group_normalization_20_21.h"
35
36
  #include "onnx/version_converter/adapters/maxpool_8_7.h"
36
37
  #include "onnx/version_converter/adapters/no_previous_version.h"
37
38
  #include "onnx/version_converter/adapters/pad_10_11.h"
39
+ #include "onnx/version_converter/adapters/q_dq_21_20.h"
38
40
  #include "onnx/version_converter/adapters/reshape_4_5.h"
39
41
  #include "onnx/version_converter/adapters/reshape_5_4.h"
40
42
  #include "onnx/version_converter/adapters/resize_10_11.h"
@@ -591,7 +593,7 @@ class DefaultVersionConverter : public BaseVersionConverter {
591
593
  TensorProto_DataType_FLOAT8E4M3FNUZ,
592
594
  TensorProto_DataType_FLOAT8E5M2,
593
595
  TensorProto_DataType_FLOAT8E5M2FNUZ};
594
- registerAdapter(std::make_unique<TypeRestriction>("IsNaN", OpSetID(19), OpSetID(20), is_nan_13_unallowed_types));
596
+ registerAdapter(std::make_unique<TypeRestriction>("IsNaN", OpSetID(20), OpSetID(19), is_nan_13_unallowed_types));
595
597
  const std::vector<TensorProto_DataType> is_inf_10_unallowed_types = {
596
598
  TensorProto_DataType_FLOAT16,
597
599
  TensorProto_DataType_BFLOAT16,
@@ -599,13 +601,76 @@ class DefaultVersionConverter : public BaseVersionConverter {
599
601
  TensorProto_DataType_FLOAT8E4M3FNUZ,
600
602
  TensorProto_DataType_FLOAT8E5M2,
601
603
  TensorProto_DataType_FLOAT8E5M2FNUZ};
602
- registerAdapter(std::make_unique<TypeRestriction>("IsInf", OpSetID(19), OpSetID(20), is_inf_10_unallowed_types));
604
+ registerAdapter(std::make_unique<TypeRestriction>("IsInf", OpSetID(20), OpSetID(19), is_inf_10_unallowed_types));
603
605
  registerAdapter(std::make_unique<AxisInputToAttribute>("DFT", OpSetID(20), OpSetID(19), 2, -2));
604
606
  const std::vector<TensorProto_DataType> reduce_min_max_18_unallowed_types = {TensorProto_DataType_BOOL};
605
607
  registerAdapter(
606
608
  std::make_unique<TypeRestriction>("ReduceMax", OpSetID(20), OpSetID(19), reduce_min_max_18_unallowed_types));
607
609
  registerAdapter(
608
610
  std::make_unique<TypeRestriction>("ReduceMin", OpSetID(20), OpSetID(19), reduce_min_max_18_unallowed_types));
611
+
612
+ /******** 20 -> 21 ********/
613
+ registerAdapter(std::make_unique<CompatibleAdapter>("Cast", OpSetID(20), OpSetID(21)));
614
+ registerAdapter(std::make_unique<CompatibleAdapter>("CastLike", OpSetID(20), OpSetID(21)));
615
+ registerAdapter(std::make_unique<CompatibleAdapter>("Constant", OpSetID(20), OpSetID(21)));
616
+ registerAdapter(std::make_unique<CompatibleAdapter>("ConstantOfShape", OpSetID(20), OpSetID(21)));
617
+ registerAdapter(std::make_unique<CompatibleAdapter>("DequantizeLinear", OpSetID(20), OpSetID(21)));
618
+ registerAdapter(std::make_unique<CompatibleAdapter>("Flatten", OpSetID(20), OpSetID(21)));
619
+ registerAdapter(std::make_unique<GroupNormalization_20_21>());
620
+ registerAdapter(std::make_unique<CompatibleAdapter>("Identity", OpSetID(20), OpSetID(21)));
621
+ registerAdapter(std::make_unique<CompatibleAdapter>("If", OpSetID(20), OpSetID(21)));
622
+ registerAdapter(std::make_unique<CompatibleAdapter>("Loop", OpSetID(20), OpSetID(21)));
623
+ registerAdapter(std::make_unique<CompatibleAdapter>("Pad", OpSetID(20), OpSetID(21)));
624
+ registerAdapter(std::make_unique<CompatibleAdapter>("QLinearMatMul", OpSetID(20), OpSetID(21)));
625
+ registerAdapter(std::make_unique<CompatibleAdapter>("QuantizeLinear", OpSetID(20), OpSetID(21)));
626
+ registerAdapter(std::make_unique<CompatibleAdapter>("Reshape", OpSetID(20), OpSetID(21)));
627
+ registerAdapter(std::make_unique<CompatibleAdapter>("Scan", OpSetID(20), OpSetID(21)));
628
+ registerAdapter(std::make_unique<CompatibleAdapter>("Shape", OpSetID(20), OpSetID(21)));
629
+ registerAdapter(std::make_unique<CompatibleAdapter>("Size", OpSetID(20), OpSetID(21)));
630
+ registerAdapter(std::make_unique<CompatibleAdapter>("Squeeze", OpSetID(20), OpSetID(21)));
631
+ registerAdapter(std::make_unique<CompatibleAdapter>("Transpose", OpSetID(20), OpSetID(21)));
632
+ registerAdapter(std::make_unique<CompatibleAdapter>("Unsqueeze", OpSetID(20), OpSetID(21)));
633
+ registerAdapter(std::make_unique<CompatibleAdapter>("GroupNormalization", OpSetID(20), OpSetID(21)));
634
+
635
+ /******** 21 -> 20 ********/
636
+ const std::vector<TensorProto_DataType> q_dq_20_unallowed_types = {
637
+ TensorProto_DataType_UINT16, TensorProto_DataType_INT16, TensorProto_DataType_UINT4, TensorProto_DataType_INT4};
638
+ const std::vector<TensorProto_DataType> q_dqmm_20_unallowed_types = {
639
+ TensorProto_DataType_BFLOAT16,
640
+ TensorProto_DataType_FLOAT16,
641
+ TensorProto_DataType_UINT4,
642
+ TensorProto_DataType_INT4};
643
+ const std::vector<TensorProto_DataType> ir10_types_not_in_ir9 = {
644
+ TensorProto_DataType_UINT4, TensorProto_DataType_INT4};
645
+ const std::vector<TensorProto_DataType> ir10_types_not_in_ir4 = {
646
+ TensorProto_DataType_FLOAT8E4M3FN,
647
+ TensorProto_DataType_FLOAT8E4M3FNUZ,
648
+ TensorProto_DataType_FLOAT8E5M2,
649
+ TensorProto_DataType_FLOAT8E5M2FNUZ,
650
+ TensorProto_DataType_UINT4,
651
+ TensorProto_DataType_INT4};
652
+
653
+ registerAdapter(std::make_unique<TypeRestriction>("Cast", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
654
+ registerAdapter(std::make_unique<TypeRestriction>("CastLike", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
655
+ registerAdapter(std::make_unique<TypeRestriction>("Constant", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
656
+ registerAdapter(
657
+ std::make_unique<TypeRestriction>("ConstantOfShape", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
658
+ registerAdapter(std::make_unique<DequantizeLinear_21_20>());
659
+ registerAdapter(std::make_unique<TypeRestriction>("Flatten", OpSetID(21), OpSetID(20), ir10_types_not_in_ir4));
660
+ registerAdapter(std::make_unique<TypeRestriction>("Identity", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
661
+ registerAdapter(std::make_unique<TypeRestriction>("If", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
662
+ registerAdapter(std::make_unique<TypeRestriction>("Loop", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
663
+ registerAdapter(std::make_unique<TypeRestriction>("Pad", OpSetID(21), OpSetID(20), ir10_types_not_in_ir4));
664
+ registerAdapter(
665
+ std::make_unique<TypeRestriction>("QLinearMatMul", OpSetID(21), OpSetID(20), q_dqmm_20_unallowed_types));
666
+ registerAdapter(std::make_unique<QuantizeLinear_21_20>());
667
+ registerAdapter(std::make_unique<TypeRestriction>("Reshape", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
668
+ registerAdapter(std::make_unique<TypeRestriction>("Scan", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
669
+ registerAdapter(std::make_unique<TypeRestriction>("Shape", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
670
+ registerAdapter(std::make_unique<TypeRestriction>("Size", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
671
+ registerAdapter(std::make_unique<TypeRestriction>("Squeeze", OpSetID(21), OpSetID(20), ir10_types_not_in_ir4));
672
+ registerAdapter(std::make_unique<TypeRestriction>("Transpose", OpSetID(21), OpSetID(20), ir10_types_not_in_ir9));
673
+ registerAdapter(std::make_unique<TypeRestriction>("Unsqueeze", OpSetID(21), OpSetID(20), ir10_types_not_in_ir4));
609
674
  }
610
675
 
611
676
  ModelProto convert_version(const ModelProto& mp_in, const OpSetID& initial_version, const OpSetID& target_version)