onnx 1.15.0__cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl → 1.16.1__cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.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.
Files changed (588) 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/affinegrid.py +209 -209
  6. onnx/backend/test/case/node/ai_onnx_ml/tree_ensemble.py +122 -0
  7. onnx/backend/test/case/node/averagepool.py +613 -628
  8. onnx/backend/test/case/node/cast.py +88 -11
  9. onnx/backend/test/case/node/dequantizelinear.py +155 -0
  10. onnx/backend/test/case/node/groupnormalization.py +13 -9
  11. onnx/backend/test/case/node/gru.py +2 -2
  12. onnx/backend/test/case/node/isinf.py +4 -4
  13. onnx/backend/test/case/node/isnan.py +2 -2
  14. onnx/backend/test/case/node/lppool.py +278 -286
  15. onnx/backend/test/case/node/lstm.py +1 -1
  16. onnx/backend/test/case/node/maxpool.py +40 -34
  17. onnx/backend/test/case/node/pow.py +1 -1
  18. onnx/backend/test/case/node/qlinearmatmul.py +143 -109
  19. onnx/backend/test/case/node/quantizelinear.py +298 -7
  20. onnx/backend/test/case/node/reducemax.py +26 -0
  21. onnx/backend/test/case/node/rnn.py +1 -1
  22. onnx/backend/test/case/node/scan.py +6 -2
  23. onnx/backend/test/case/node/scatterelements.py +1 -1
  24. onnx/backend/test/case/node/topk.py +1 -1
  25. onnx/backend/test/case/utils.py +1 -3
  26. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/model.onnx +0 -0
  27. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/input_0.pb +0 -0
  28. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_set_membership/test_data_set_0/output_0.pb +0 -0
  29. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/model.onnx +0 -0
  30. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/input_0.pb +1 -0
  31. onnx/backend/test/data/node/test_ai_onnx_ml_tree_ensemble_single_tree/test_data_set_0/output_0.pb +0 -0
  32. onnx/backend/test/data/node/test_cast_BFLOAT16_to_FLOAT/model.onnx +0 -0
  33. onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT/model.onnx +0 -0
  34. onnx/backend/test/data/node/test_cast_DOUBLE_to_FLOAT16/model.onnx +0 -0
  35. onnx/backend/test/data/node/test_cast_FLOAT16_to_DOUBLE/model.onnx +0 -0
  36. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT/model.onnx +0 -0
  37. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
  38. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
  39. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  40. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  41. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
  42. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  43. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
  44. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
  45. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  46. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  47. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
  48. onnx/backend/test/data/node/test_cast_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  49. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/model.onnx +0 -0
  50. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/input_0.pb +0 -0
  51. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/output_0.pb +1 -0
  52. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/model.onnx +0 -0
  53. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/input_0.pb +0 -0
  54. onnx/backend/test/data/node/test_cast_FLOAT16_to_UINT4/test_data_set_0/output_0.pb +0 -0
  55. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
  56. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  57. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  58. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/model.onnx +0 -0
  59. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  60. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  61. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
  62. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  63. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  64. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/model.onnx +0 -0
  65. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  66. onnx/backend/test/data/node/test_cast_FLOAT8E4M3FN_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  67. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
  68. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  69. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  70. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/model.onnx +0 -0
  71. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  72. onnx/backend/test/data/node/test_cast_FLOAT8E5M2FNUZ_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  73. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
  74. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  75. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  76. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/model.onnx +0 -0
  77. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  78. onnx/backend/test/data/node/test_cast_FLOAT8E5M2_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  79. onnx/backend/test/data/node/test_cast_FLOAT_to_BFLOAT16/model.onnx +0 -0
  80. onnx/backend/test/data/node/test_cast_FLOAT_to_DOUBLE/model.onnx +0 -0
  81. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT16/model.onnx +0 -0
  82. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  83. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
  84. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  85. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  86. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
  87. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  88. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  89. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
  90. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  91. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  92. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
  93. onnx/backend/test/data/node/test_cast_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  94. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/model.onnx +0 -0
  95. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/input_0.pb +0 -0
  96. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/output_0.pb +1 -0
  97. onnx/backend/test/data/node/test_cast_FLOAT_to_STRING/model.onnx +0 -0
  98. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/model.onnx +0 -0
  99. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/input_0.pb +0 -0
  100. onnx/backend/test/data/node/test_cast_FLOAT_to_UINT4/test_data_set_0/output_0.pb +0 -0
  101. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/model.onnx +0 -0
  102. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/input_0.pb +1 -0
  103. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  104. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/model.onnx +0 -0
  105. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/input_0.pb +1 -0
  106. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  107. onnx/backend/test/data/node/test_cast_INT4_to_INT8/model.onnx +0 -0
  108. onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/input_0.pb +1 -0
  109. onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/output_0.pb +0 -0
  110. onnx/backend/test/data/node/test_cast_STRING_to_FLOAT/model.onnx +0 -0
  111. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/model.onnx +0 -0
  112. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/input_0.pb +0 -0
  113. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT/test_data_set_0/output_0.pb +0 -0
  114. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/model.onnx +0 -0
  115. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/input_0.pb +0 -0
  116. onnx/backend/test/data/node/test_cast_UINT4_to_FLOAT16/test_data_set_0/output_0.pb +0 -0
  117. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/model.onnx +0 -0
  118. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/input_0.pb +0 -0
  119. onnx/backend/test/data/node/test_cast_UINT4_to_UINT8/test_data_set_0/output_0.pb +0 -0
  120. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/model.onnx +0 -0
  121. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +2 -2
  122. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  123. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  124. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +2 -2
  125. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  126. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/model.onnx +0 -0
  127. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/input_0.pb +2 -2
  128. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  129. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  130. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +2 -2
  131. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT16_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  132. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  133. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/input_0.pb +0 -0
  134. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FN/test_data_set_0/output_0.pb +0 -0
  135. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  136. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/input_0.pb +0 -0
  137. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E4M3FNUZ/test_data_set_0/output_0.pb +0 -0
  138. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  139. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/input_0.pb +0 -0
  140. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2/test_data_set_0/output_0.pb +0 -0
  141. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  142. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/input_0.pb +0 -0
  143. onnx/backend/test/data/node/test_cast_no_saturate_FLOAT_to_FLOAT8E5M2FNUZ/test_data_set_0/output_0.pb +0 -0
  144. onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT/model.onnx +0 -0
  145. onnx/backend/test/data/node/test_castlike_BFLOAT16_to_FLOAT_expanded/model.onnx +0 -0
  146. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT/model.onnx +0 -0
  147. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16/model.onnx +0 -0
  148. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT16_expanded/model.onnx +0 -0
  149. onnx/backend/test/data/node/test_castlike_DOUBLE_to_FLOAT_expanded/model.onnx +0 -0
  150. onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE/model.onnx +0 -0
  151. onnx/backend/test/data/node/test_castlike_FLOAT16_to_DOUBLE_expanded/model.onnx +0 -0
  152. onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT/model.onnx +0 -0
  153. onnx/backend/test/data/node/test_castlike_FLOAT16_to_FLOAT_expanded/model.onnx +0 -0
  154. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT/model.onnx +0 -0
  155. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FNUZ_to_FLOAT_expanded/model.onnx +0 -0
  156. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT/model.onnx +0 -0
  157. onnx/backend/test/data/node/test_castlike_FLOAT8E4M3FN_to_FLOAT_expanded/model.onnx +0 -0
  158. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT/model.onnx +0 -0
  159. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2FNUZ_to_FLOAT_expanded/model.onnx +0 -0
  160. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT/model.onnx +0 -0
  161. onnx/backend/test/data/node/test_castlike_FLOAT8E5M2_to_FLOAT_expanded/model.onnx +0 -0
  162. onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16/model.onnx +0 -0
  163. onnx/backend/test/data/node/test_castlike_FLOAT_to_BFLOAT16_expanded/model.onnx +0 -0
  164. onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE/model.onnx +0 -0
  165. onnx/backend/test/data/node/test_castlike_FLOAT_to_DOUBLE_expanded/model.onnx +0 -0
  166. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16/model.onnx +0 -0
  167. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT16_expanded/model.onnx +0 -0
  168. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN/model.onnx +0 -0
  169. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ/model.onnx +0 -0
  170. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FNUZ_expanded/model.onnx +0 -0
  171. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E4M3FN_expanded/model.onnx +0 -0
  172. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2/model.onnx +0 -0
  173. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ/model.onnx +0 -0
  174. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2FNUZ_expanded/model.onnx +0 -0
  175. onnx/backend/test/data/node/test_castlike_FLOAT_to_FLOAT8E5M2_expanded/model.onnx +0 -0
  176. onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING/model.onnx +0 -0
  177. onnx/backend/test/data/node/test_castlike_FLOAT_to_STRING_expanded/model.onnx +0 -0
  178. onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT/model.onnx +0 -0
  179. onnx/backend/test/data/node/test_castlike_STRING_to_FLOAT_expanded/model.onnx +0 -0
  180. onnx/backend/test/data/node/test_constant/model.onnx +0 -0
  181. onnx/backend/test/data/node/test_constant_pad/model.onnx +0 -0
  182. onnx/backend/test/data/node/test_constant_pad_axes/model.onnx +0 -0
  183. onnx/backend/test/data/node/test_constant_pad_negative_axes/model.onnx +0 -0
  184. onnx/backend/test/data/node/test_constantofshape_float_ones/model.onnx +0 -0
  185. onnx/backend/test/data/node/test_constantofshape_int_shape_zero/model.onnx +0 -0
  186. onnx/backend/test/data/node/test_constantofshape_int_zeros/model.onnx +0 -0
  187. onnx/backend/test/data/node/test_dequantizelinear/model.onnx +0 -0
  188. onnx/backend/test/data/node/test_dequantizelinear_axis/model.onnx +0 -0
  189. onnx/backend/test/data/node/test_dequantizelinear_blocked/model.onnx +0 -0
  190. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_0.pb +1 -0
  191. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_1.pb +0 -0
  192. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/input_2.pb +0 -0
  193. onnx/backend/test/data/node/test_dequantizelinear_blocked/test_data_set_0/output_0.pb +0 -0
  194. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn/model.onnx +0 -0
  195. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_float16/model.onnx +0 -0
  196. onnx/backend/test/data/node/test_dequantizelinear_e4m3fn_zero_point/model.onnx +0 -0
  197. onnx/backend/test/data/node/test_dequantizelinear_e5m2/model.onnx +0 -0
  198. onnx/backend/test/data/node/test_dequantizelinear_int16/model.onnx +0 -0
  199. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_0.pb +1 -0
  200. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_1.pb +0 -0
  201. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/input_2.pb +0 -0
  202. onnx/backend/test/data/node/test_dequantizelinear_int16/test_data_set_0/output_0.pb +0 -0
  203. onnx/backend/test/data/node/test_dequantizelinear_int4/model.onnx +0 -0
  204. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_0.pb +1 -0
  205. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_1.pb +0 -0
  206. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_2.pb +1 -0
  207. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/output_0.pb +0 -0
  208. onnx/backend/test/data/node/test_dequantizelinear_uint16/model.onnx +0 -0
  209. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
  210. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
  211. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
  212. onnx/backend/test/data/node/test_dequantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
  213. onnx/backend/test/data/node/test_dequantizelinear_uint4/model.onnx +0 -0
  214. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_0.pb +1 -0
  215. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
  216. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
  217. onnx/backend/test/data/node/test_dequantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
  218. onnx/backend/test/data/node/test_edge_pad/model.onnx +0 -0
  219. onnx/backend/test/data/node/test_flatten_axis0/model.onnx +0 -0
  220. onnx/backend/test/data/node/test_flatten_axis1/model.onnx +0 -0
  221. onnx/backend/test/data/node/test_flatten_axis2/model.onnx +0 -0
  222. onnx/backend/test/data/node/test_flatten_axis3/model.onnx +0 -0
  223. onnx/backend/test/data/node/test_flatten_default_axis/model.onnx +0 -0
  224. onnx/backend/test/data/node/test_flatten_negative_axis1/model.onnx +0 -0
  225. onnx/backend/test/data/node/test_flatten_negative_axis2/model.onnx +0 -0
  226. onnx/backend/test/data/node/test_flatten_negative_axis3/model.onnx +0 -0
  227. onnx/backend/test/data/node/test_flatten_negative_axis4/model.onnx +0 -0
  228. onnx/backend/test/data/node/test_group_normalization_epsilon/model.onnx +0 -0
  229. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_0.pb +1 -1
  230. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb +1 -1
  231. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb +1 -1
  232. onnx/backend/test/data/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb +0 -0
  233. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/model.onnx +0 -0
  234. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_0.pb +1 -1
  235. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_1.pb +1 -1
  236. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/input_2.pb +1 -1
  237. onnx/backend/test/data/node/test_group_normalization_epsilon_expanded/test_data_set_0/output_0.pb +0 -0
  238. onnx/backend/test/data/node/test_group_normalization_example/model.onnx +0 -0
  239. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_1.pb +1 -1
  240. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/input_2.pb +1 -1
  241. onnx/backend/test/data/node/test_group_normalization_example/test_data_set_0/output_0.pb +0 -0
  242. onnx/backend/test/data/node/test_group_normalization_example_expanded/model.onnx +0 -0
  243. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_1.pb +1 -1
  244. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/input_2.pb +1 -1
  245. onnx/backend/test/data/node/test_group_normalization_example_expanded/test_data_set_0/output_0.pb +0 -0
  246. onnx/backend/test/data/node/test_identity/model.onnx +0 -0
  247. onnx/backend/test/data/node/test_identity_sequence/model.onnx +0 -0
  248. onnx/backend/test/data/node/test_lrn_default/test_data_set_0/output_0.pb +0 -0
  249. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/model.onnx +0 -0
  250. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/test_data_set_0/input_0.pb +0 -0
  251. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/test_data_set_0/output_0.pb +0 -0
  252. onnx/backend/test/data/node/test_mvn/test_data_set_0/output_0.pb +1 -1
  253. onnx/backend/test/data/node/test_mvn_expanded/test_data_set_0/output_0.pb +1 -1
  254. onnx/backend/test/data/node/test_mvn_expanded_ver18/test_data_set_0/output_0.pb +1 -1
  255. onnx/backend/test/data/node/test_pow/test_data_set_0/output_0.pb +0 -0
  256. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/model.onnx +0 -0
  257. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_0.pb +1 -0
  258. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_1.pb +2 -0
  259. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_2.pb +1 -0
  260. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_3.pb +0 -0
  261. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_4.pb +2 -0
  262. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_5.pb +1 -0
  263. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_6.pb +2 -0
  264. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/input_7.pb +1 -0
  265. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float16/test_data_set_0/output_0.pb +1 -0
  266. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/model.onnx +0 -0
  267. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_0.pb +1 -0
  268. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_2.pb +1 -0
  269. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_3.pb +0 -0
  270. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_5.pb +1 -0
  271. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/input_7.pb +1 -0
  272. onnx/backend/test/data/node/test_qlinearmatmul_2D_int8_float32/test_data_set_0/output_0.pb +1 -0
  273. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/model.onnx +0 -0
  274. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_1.pb +2 -0
  275. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_4.pb +2 -0
  276. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float16/test_data_set_0/input_6.pb +2 -0
  277. onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float32}/model.onnx +0 -0
  278. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_0.pb +0 -0
  279. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/input_3.pb +0 -0
  280. onnx/backend/test/data/node/test_qlinearmatmul_2D_uint8_float32/test_data_set_0/output_0.pb +1 -0
  281. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/model.onnx +0 -0
  282. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_0.pb +1 -0
  283. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_1.pb +2 -0
  284. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_2.pb +1 -0
  285. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_3.pb +0 -0
  286. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_4.pb +2 -0
  287. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_5.pb +1 -0
  288. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_6.pb +2 -0
  289. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/input_7.pb +1 -0
  290. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float16/test_data_set_0/output_0.pb +1 -0
  291. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/model.onnx +0 -0
  292. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_0.pb +1 -0
  293. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_1.pb +1 -0
  294. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_2.pb +1 -0
  295. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_3.pb +0 -0
  296. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_4.pb +1 -0
  297. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_5.pb +1 -0
  298. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_6.pb +1 -0
  299. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/input_7.pb +1 -0
  300. onnx/backend/test/data/node/test_qlinearmatmul_3D_int8_float32/test_data_set_0/output_0.pb +1 -0
  301. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/model.onnx +0 -0
  302. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_1.pb +2 -0
  303. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_2.pb +1 -0
  304. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_4.pb +2 -0
  305. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_5.pb +1 -0
  306. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_6.pb +2 -0
  307. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float16/test_data_set_0/input_7.pb +1 -0
  308. onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float32}/model.onnx +0 -0
  309. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_0.pb +0 -0
  310. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_1.pb +1 -0
  311. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_2.pb +1 -0
  312. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_3.pb +0 -0
  313. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_4.pb +1 -0
  314. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_5.pb +1 -0
  315. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_6.pb +1 -0
  316. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/input_7.pb +1 -0
  317. onnx/backend/test/data/node/test_qlinearmatmul_3D_uint8_float32/test_data_set_0/output_0.pb +1 -0
  318. onnx/backend/test/data/node/test_quantizelinear/model.onnx +0 -0
  319. onnx/backend/test/data/node/test_quantizelinear_axis/model.onnx +0 -0
  320. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/model.onnx +0 -0
  321. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_0.pb +0 -0
  322. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_1.pb +0 -0
  323. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/input_2.pb +0 -0
  324. onnx/backend/test/data/node/test_quantizelinear_blocked_asymmetric/test_data_set_0/output_0.pb +1 -0
  325. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/model.onnx +0 -0
  326. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_0.pb +0 -0
  327. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/input_1.pb +0 -0
  328. onnx/backend/test/data/node/test_quantizelinear_blocked_symmetric/test_data_set_0/output_0.pb +0 -0
  329. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/model.onnx +0 -0
  330. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/input_2.pb +0 -0
  331. onnx/backend/test/data/node/test_quantizelinear_e4m3fn/test_data_set_0/output_0.pb +0 -0
  332. onnx/backend/test/data/node/test_quantizelinear_e5m2/model.onnx +0 -0
  333. onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/input_2.pb +0 -0
  334. onnx/backend/test/data/node/test_quantizelinear_e5m2/test_data_set_0/output_0.pb +0 -0
  335. onnx/backend/test/data/node/test_quantizelinear_int16/model.onnx +0 -0
  336. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_0.pb +0 -0
  337. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_1.pb +0 -0
  338. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/input_2.pb +0 -0
  339. onnx/backend/test/data/node/test_quantizelinear_int16/test_data_set_0/output_0.pb +0 -0
  340. onnx/backend/test/data/node/test_quantizelinear_int4/model.onnx +0 -0
  341. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_0.pb +0 -0
  342. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_1.pb +0 -0
  343. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/input_2.pb +1 -0
  344. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/output_0.pb +1 -0
  345. onnx/backend/test/data/node/test_quantizelinear_uint16/model.onnx +0 -0
  346. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_0.pb +0 -0
  347. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_1.pb +0 -0
  348. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/input_2.pb +1 -0
  349. onnx/backend/test/data/node/test_quantizelinear_uint16/test_data_set_0/output_0.pb +0 -0
  350. onnx/backend/test/data/node/test_quantizelinear_uint4/model.onnx +0 -0
  351. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_0.pb +0 -0
  352. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_1.pb +0 -0
  353. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/input_2.pb +1 -0
  354. onnx/backend/test/data/node/test_quantizelinear_uint4/test_data_set_0/output_0.pb +0 -0
  355. onnx/backend/test/data/node/test_reflect_pad/model.onnx +0 -0
  356. onnx/backend/test/data/node/test_reshape_allowzero_reordered/model.onnx +0 -0
  357. onnx/backend/test/data/node/test_reshape_extended_dims/model.onnx +0 -0
  358. onnx/backend/test/data/node/test_reshape_negative_dim/model.onnx +0 -0
  359. onnx/backend/test/data/node/test_reshape_negative_extended_dims/model.onnx +0 -0
  360. onnx/backend/test/data/node/test_reshape_one_dim/model.onnx +0 -0
  361. onnx/backend/test/data/node/test_reshape_reduced_dims/model.onnx +0 -0
  362. onnx/backend/test/data/node/test_reshape_reordered_all_dims/model.onnx +0 -0
  363. onnx/backend/test/data/node/test_reshape_reordered_last_dims/model.onnx +0 -0
  364. onnx/backend/test/data/node/test_reshape_zero_and_negative_dim/model.onnx +0 -0
  365. onnx/backend/test/data/node/test_reshape_zero_dim/model.onnx +0 -0
  366. onnx/backend/test/data/node/test_shape/model.onnx +0 -0
  367. onnx/backend/test/data/node/test_shape_clip_end/model.onnx +0 -0
  368. onnx/backend/test/data/node/test_shape_clip_start/model.onnx +0 -0
  369. onnx/backend/test/data/node/test_shape_end_1/model.onnx +0 -0
  370. onnx/backend/test/data/node/test_shape_end_negative_1/model.onnx +0 -0
  371. onnx/backend/test/data/node/test_shape_example/model.onnx +0 -0
  372. onnx/backend/test/data/node/test_shape_start_1/model.onnx +0 -0
  373. onnx/backend/test/data/node/test_shape_start_1_end_2/model.onnx +0 -0
  374. onnx/backend/test/data/node/test_shape_start_1_end_negative_1/model.onnx +0 -0
  375. onnx/backend/test/data/node/test_shape_start_negative_1/model.onnx +0 -0
  376. onnx/backend/test/data/node/test_size/model.onnx +0 -0
  377. onnx/backend/test/data/node/test_size_example/model.onnx +0 -0
  378. onnx/backend/test/data/node/test_squeeze/model.onnx +0 -0
  379. onnx/backend/test/data/node/test_squeeze_negative_axes/model.onnx +0 -0
  380. onnx/backend/test/data/node/test_transpose_all_permutations_0/model.onnx +0 -0
  381. onnx/backend/test/data/node/test_transpose_all_permutations_1/model.onnx +0 -0
  382. onnx/backend/test/data/node/test_transpose_all_permutations_2/model.onnx +0 -0
  383. onnx/backend/test/data/node/test_transpose_all_permutations_3/model.onnx +0 -0
  384. onnx/backend/test/data/node/test_transpose_all_permutations_4/model.onnx +0 -0
  385. onnx/backend/test/data/node/test_transpose_all_permutations_5/model.onnx +0 -0
  386. onnx/backend/test/data/node/test_transpose_default/model.onnx +0 -0
  387. onnx/backend/test/data/node/test_unsqueeze_axis_0/model.onnx +0 -0
  388. onnx/backend/test/data/node/test_unsqueeze_axis_1/model.onnx +0 -0
  389. onnx/backend/test/data/node/test_unsqueeze_axis_2/model.onnx +0 -0
  390. onnx/backend/test/data/node/test_unsqueeze_negative_axes/model.onnx +0 -0
  391. onnx/backend/test/data/node/test_unsqueeze_three_axes/model.onnx +0 -0
  392. onnx/backend/test/data/node/test_unsqueeze_two_axes/model.onnx +0 -0
  393. onnx/backend/test/data/node/test_unsqueeze_unsorted_axes/model.onnx +0 -0
  394. onnx/backend/test/data/node/test_wrap_pad/model.onnx +0 -0
  395. onnx/backend/test/loader/__init__.py +0 -1
  396. onnx/backend/test/runner/__init__.py +43 -15
  397. onnx/checker.cc +104 -99
  398. onnx/checker.h +23 -3
  399. onnx/checker.py +56 -20
  400. onnx/common/assertions.cc +10 -5
  401. onnx/common/common.h +19 -0
  402. onnx/common/file_utils.h +3 -1
  403. onnx/common/interned_strings.h +7 -1
  404. onnx/common/ir.h +30 -7
  405. onnx/common/ir_pb_converter.cc +6 -0
  406. onnx/common/path.h +18 -2
  407. onnx/common/proto_util.h +43 -0
  408. onnx/common/version.h +1 -1
  409. onnx/cpp2py_export.cc +88 -56
  410. onnx/defs/__init__.py +29 -8
  411. onnx/defs/controlflow/defs.cc +16 -16
  412. onnx/defs/controlflow/old.cc +177 -0
  413. onnx/defs/data_propagators.h +2 -0
  414. onnx/defs/data_type_utils.cc +2 -0
  415. onnx/defs/generator/defs.cc +6 -4
  416. onnx/defs/generator/old.cc +115 -0
  417. onnx/defs/math/defs.cc +37 -142
  418. onnx/defs/math/old.cc +96 -12
  419. onnx/defs/math/utils.cc +127 -0
  420. onnx/defs/math/utils.h +8 -0
  421. onnx/defs/nn/defs.cc +72 -59
  422. onnx/defs/nn/old.cc +181 -2
  423. onnx/defs/object_detection/defs.cc +2 -2
  424. onnx/defs/object_detection/old.cc +2 -2
  425. onnx/defs/operator_sets.h +51 -0
  426. onnx/defs/operator_sets_ml.h +14 -0
  427. onnx/defs/parser.cc +112 -54
  428. onnx/defs/parser.h +14 -2
  429. onnx/defs/printer.cc +14 -7
  430. onnx/defs/quantization/defs.cc +111 -44
  431. onnx/defs/quantization/old.cc +130 -1
  432. onnx/defs/schema.cc +62 -18
  433. onnx/defs/schema.h +194 -48
  434. onnx/defs/shape_inference.cc +28 -19
  435. onnx/defs/shape_inference.h +2 -0
  436. onnx/defs/tensor/defs.cc +54 -96
  437. onnx/defs/tensor/old.cc +939 -34
  438. onnx/defs/tensor/utils.cc +6 -3
  439. onnx/defs/tensor/utils.h +5 -1
  440. onnx/defs/tensor_proto_util.cc +2 -0
  441. onnx/defs/tensor_util.cc +2 -0
  442. onnx/defs/traditionalml/defs.cc +273 -117
  443. onnx/defs/traditionalml/old.cc +329 -14
  444. onnx/defs/traditionalml/utils.h +27 -0
  445. onnx/external_data_helper.py +12 -26
  446. onnx/helper.py +242 -169
  447. onnx/hub.py +104 -70
  448. onnx/inliner/inliner.cc +89 -31
  449. onnx/inliner/inliner.h +5 -0
  450. onnx/inliner.py +2 -0
  451. onnx/mapping.py +9 -0
  452. onnx/model_container.py +346 -0
  453. onnx/numpy_helper.py +100 -38
  454. onnx/onnx-ml.proto +50 -13
  455. onnx/onnx.in.proto +50 -13
  456. onnx/onnx.proto +50 -13
  457. onnx/onnx_cpp2py_export/__init__.pyi +5 -0
  458. onnx/onnx_cpp2py_export/checker.pyi +21 -0
  459. onnx/onnx_cpp2py_export/defs.pyi +202 -0
  460. onnx/onnx_cpp2py_export/inliner.pyi +19 -0
  461. onnx/onnx_cpp2py_export/parser.pyi +32 -0
  462. onnx/onnx_cpp2py_export/printer.pyi +3 -0
  463. onnx/onnx_cpp2py_export/shape_inference.pyi +16 -0
  464. onnx/onnx_cpp2py_export/version_converter.pyi +4 -0
  465. onnx/onnx_cpp2py_export.cpython-311-aarch64-linux-gnu.so +0 -0
  466. onnx/onnx_data_pb2.pyi +146 -0
  467. onnx/onnx_ml_pb2.py +52 -52
  468. onnx/onnx_ml_pb2.pyi +663 -0
  469. onnx/onnx_operators_ml_pb2.pyi +67 -0
  470. onnx/reference/__init__.py +2 -0
  471. onnx/reference/custom_element_types.py +2 -0
  472. onnx/reference/op_run.py +166 -121
  473. onnx/reference/ops/_op.py +27 -50
  474. onnx/reference/ops/_op_list.py +36 -24
  475. onnx/reference/ops/aionnx_preview_training/_op_list.py +15 -8
  476. onnx/reference/ops/aionnxml/_common_classifier.py +3 -5
  477. onnx/reference/ops/aionnxml/_op_list.py +16 -8
  478. onnx/reference/ops/aionnxml/op_array_feature_extractor.py +4 -6
  479. onnx/reference/ops/aionnxml/op_linear_classifier.py +1 -2
  480. onnx/reference/ops/aionnxml/op_normalizer.py +3 -3
  481. onnx/reference/ops/aionnxml/op_svm_helper.py +1 -3
  482. onnx/reference/ops/aionnxml/op_svm_regressor.py +1 -3
  483. onnx/reference/ops/aionnxml/op_tree_ensemble.py +257 -0
  484. onnx/reference/ops/aionnxml/op_tree_ensemble_helper.py +2 -6
  485. onnx/reference/ops/aionnxml/op_tree_ensemble_regressor.py +4 -4
  486. onnx/reference/ops/experimental/_op_list.py +15 -8
  487. onnx/reference/ops/op_affine_grid.py +91 -91
  488. onnx/reference/ops/op_average_pool.py +107 -107
  489. onnx/reference/ops/op_blackman_window.py +5 -6
  490. onnx/reference/ops/op_cast.py +22 -0
  491. onnx/reference/ops/op_cast_like.py +6 -0
  492. onnx/reference/ops/op_clip.py +5 -8
  493. onnx/reference/ops/op_col2im.py +1 -3
  494. onnx/reference/ops/op_constant.py +7 -1
  495. onnx/reference/ops/op_dequantize_linear.py +43 -40
  496. onnx/reference/ops/op_det.py +1 -1
  497. onnx/reference/ops/op_dynamic_quantize_linear.py +2 -2
  498. onnx/reference/ops/op_grid_sample.py +2 -4
  499. onnx/reference/ops/op_hamming_window.py +3 -6
  500. onnx/reference/ops/op_hann_window.py +3 -6
  501. onnx/reference/ops/op_if.py +4 -3
  502. onnx/reference/ops/op_loop.py +7 -9
  503. onnx/reference/ops/op_lp_pool.py +41 -41
  504. onnx/reference/ops/op_matmul.py +1 -2
  505. onnx/reference/ops/op_max_pool.py +5 -0
  506. onnx/reference/ops/op_optional.py +1 -1
  507. onnx/reference/ops/op_pool_common.py +328 -331
  508. onnx/reference/ops/op_qlinear_matmul.py +2 -2
  509. onnx/reference/ops/op_quantize_linear.py +166 -71
  510. onnx/reference/ops/op_resize.py +25 -21
  511. onnx/reference/ops/op_rnn.py +20 -12
  512. onnx/reference/ops/op_scan.py +23 -15
  513. onnx/reference/ops/op_scatter_elements.py +7 -6
  514. onnx/reference/ops/op_stft.py +3 -5
  515. onnx/reference/ops/op_string_normalizer.py +7 -7
  516. onnx/reference/ops/op_tfidf_vectorizer.py +7 -8
  517. onnx/reference/ops/op_topk.py +9 -11
  518. onnx/reference/ops/op_unique.py +1 -1
  519. onnx/reference/reference_evaluator.py +119 -63
  520. onnx/shape_inference/implementation.cc +160 -127
  521. onnx/shape_inference.py +11 -10
  522. onnx/subbyte.py +72 -0
  523. onnx/test/__init__.pyi +6 -0
  524. onnx/test/checker_test.py +21 -1
  525. onnx/test/compose_test.py +26 -74
  526. onnx/test/cpp/inliner_test.cc +76 -1
  527. onnx/test/cpp/ir_test.cc +60 -0
  528. onnx/test/cpp/parser_test.cc +106 -0
  529. onnx/test/function_test.py +1 -3
  530. onnx/test/helper_test.py +64 -4
  531. onnx/test/model_container_refeval_test.py +139 -0
  532. onnx/test/model_container_test.py +136 -0
  533. onnx/test/model_inference_test.py +44 -0
  534. onnx/test/reference_evaluator_ml_test.py +448 -47
  535. onnx/test/reference_evaluator_model_test.py +130 -0
  536. onnx/test/reference_evaluator_test.py +901 -14
  537. onnx/test/schema_test.py +166 -1
  538. onnx/test/shape_inference_test.py +285 -6
  539. onnx/test/symbolic_shape_test.py +3 -8
  540. onnx/test/test_backend_onnxruntime.py +238 -224
  541. onnx/test/test_backend_reference.py +11 -0
  542. onnx/test/test_external_data.py +51 -2
  543. onnx/test/version_converter/automatic_conversion_test_base.py +2 -1
  544. onnx/test/version_converter/automatic_upgrade_test.py +12 -10
  545. onnx/test/version_converter_test.py +166 -0
  546. onnx/tools/replace_constants.py +23 -26
  547. onnx/tools/update_model_dims.py +1 -2
  548. onnx/version.py +1 -1
  549. onnx/version_converter/adapters/group_normalization_20_21.h +128 -0
  550. onnx/version_converter/adapters/q_dq_21_20.h +77 -0
  551. onnx/version_converter/convert.h +67 -2
  552. onnx/version_converter.py +6 -142
  553. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/METADATA +18 -15
  554. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/RECORD +6452 -6286
  555. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/WHEEL +1 -1
  556. onnx/examples/Protobufs.ipynb +0 -639
  557. onnx/examples/check_model.ipynb +0 -128
  558. onnx/examples/load_model.ipynb +0 -116
  559. onnx/examples/make_model.ipynb +0 -176
  560. onnx/examples/np_array_tensorproto.ipynb +0 -136
  561. onnx/examples/resources/single_relu.onnx +0 -12
  562. onnx/examples/resources/single_relu_new.onnx +0 -12
  563. onnx/examples/resources/tensor.pb +0 -0
  564. onnx/examples/resources/two_transposes.onnx +0 -0
  565. onnx/examples/save_model.ipynb +0 -56
  566. onnx/examples/shape_inference.ipynb +0 -111
  567. onnx/test/reference_evaluator_backend_test.py +0 -876
  568. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_1.pb +0 -0
  569. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_4.pb +0 -0
  570. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_int8_float32}/test_data_set_0/input_6.pb +0 -0
  571. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
  572. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_2.pb +0 -0
  573. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
  574. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_5.pb +0 -0
  575. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/input_7.pb +0 -0
  576. /onnx/backend/test/data/node/{test_qlinearmatmul_2D → test_qlinearmatmul_2D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
  577. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_1.pb +0 -0
  578. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_2.pb +0 -0
  579. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_4.pb +0 -0
  580. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_5.pb +0 -0
  581. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_6.pb +0 -0
  582. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_2D_uint8_float32}/test_data_set_0/input_7.pb +0 -0
  583. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_0.pb +0 -0
  584. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/input_3.pb +0 -0
  585. /onnx/backend/test/data/node/{test_qlinearmatmul_3D → test_qlinearmatmul_3D_uint8_float16}/test_data_set_0/output_0.pb +0 -0
  586. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/LICENSE +0 -0
  587. {onnx-1.15.0.dist-info → onnx-1.16.1.dist-info}/entry_points.txt +0 -0
  588. {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 = [
@@ -1,209 +1,209 @@
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.reference.ops.op_affine_grid import (
11
- apply_affine_transform,
12
- construct_original_grid,
13
- )
14
-
15
-
16
- def create_affine_matrix_3d(
17
- angle1,
18
- angle2,
19
- offset_x,
20
- offset_y,
21
- offset_z,
22
- shear_x,
23
- shear_y,
24
- shear_z,
25
- scale_x,
26
- scale_y,
27
- scale_z,
28
- ):
29
- rot_x = np.stack(
30
- [
31
- np.ones_like(angle1),
32
- np.zeros_like(angle1),
33
- np.zeros_like(angle1),
34
- np.zeros_like(angle1),
35
- np.cos(angle1),
36
- -np.sin(angle1),
37
- np.zeros_like(angle1),
38
- np.sin(angle1),
39
- np.cos(angle1),
40
- ],
41
- axis=-1,
42
- ).reshape(-1, 3, 3)
43
- rot_y = np.stack(
44
- [
45
- np.cos(angle2),
46
- np.zeros_like(angle2),
47
- np.sin(angle2),
48
- np.zeros_like(angle2),
49
- np.ones_like(angle2),
50
- np.zeros_like(angle2),
51
- -np.sin(angle2),
52
- np.zeros_like(angle2),
53
- np.cos(angle2),
54
- ],
55
- axis=-1,
56
- ).reshape(-1, 3, 3)
57
- shear = np.stack(
58
- [
59
- np.ones_like(shear_x),
60
- shear_x,
61
- shear_y,
62
- shear_z,
63
- np.ones_like(shear_x),
64
- shear_x,
65
- shear_y,
66
- shear_x,
67
- np.ones_like(shear_x),
68
- ],
69
- axis=-1,
70
- ).reshape(-1, 3, 3)
71
- scale = np.stack(
72
- [
73
- scale_x,
74
- np.zeros_like(scale_x),
75
- np.zeros_like(scale_x),
76
- np.zeros_like(scale_x),
77
- scale_y,
78
- np.zeros_like(scale_x),
79
- np.zeros_like(scale_x),
80
- np.zeros_like(scale_x),
81
- scale_z,
82
- ],
83
- axis=-1,
84
- ).reshape(-1, 3, 3)
85
- translation = np.transpose(np.array([offset_x, offset_y, offset_z])).reshape(
86
- -1, 1, 3
87
- )
88
- rotation_matrix = rot_y @ rot_x @ shear @ scale # (N, 3, 3)
89
- rotation_matrix = np.transpose(rotation_matrix, (0, 2, 1))
90
- affine_matrix = np.hstack((rotation_matrix, translation))
91
- affine_matrix = np.transpose(affine_matrix, (0, 2, 1))
92
- return affine_matrix.astype(np.float32)
93
-
94
-
95
- def create_affine_matrix_2d(
96
- angle1, offset_x, offset_y, shear_x, shear_y, scale_x, scale_y
97
- ):
98
- rot = np.stack(
99
- [np.cos(angle1), -np.sin(angle1), np.sin(angle1), np.cos(angle1)], axis=-1
100
- ).reshape(-1, 2, 2)
101
- shear = np.stack(
102
- [np.ones_like(shear_x), shear_x, shear_y, np.ones_like(shear_x)], axis=-1
103
- ).reshape(-1, 2, 2)
104
- scale = np.stack(
105
- [scale_x, np.zeros_like(scale_x), np.zeros_like(scale_x), scale_y], axis=-1
106
- ).reshape(-1, 2, 2)
107
- translation = np.transpose(np.array([offset_x, offset_y])).reshape(-1, 1, 2)
108
- rotation_matrix = rot @ shear @ scale # (N, 3, 3)
109
- rotation_matrix = np.transpose(rotation_matrix, (0, 2, 1))
110
- affine_matrix = np.hstack((rotation_matrix, translation))
111
- affine_matrix = np.transpose(affine_matrix, (0, 2, 1))
112
- return affine_matrix.astype(np.float32)
113
-
114
-
115
- def create_theta_2d():
116
- angle = np.array([np.pi / 4, np.pi / 3])
117
- offset_x = np.array([5.0, 2.5])
118
- offset_y = np.array([-3.3, 1.1])
119
- shear_x = np.array([-0.5, 0.5])
120
- shear_y = np.array([0.3, -0.3])
121
- scale_x = np.array([2.2, 1.1])
122
- scale_y = np.array([3.1, 0.9])
123
- theta_2d = create_affine_matrix_2d(
124
- angle, offset_x, offset_y, shear_x, shear_y, scale_x, scale_y
125
- )
126
- return theta_2d
127
-
128
-
129
- def create_theta_3d():
130
- angle1 = np.array([np.pi / 4, np.pi / 3])
131
- angle2 = np.array([np.pi / 6, np.pi / 2])
132
- offset_x = np.array([5.0, 2.5])
133
- offset_y = np.array([-3.3, 1.1])
134
- offset_z = np.array([-1.1, 2.2])
135
- shear_x = np.array([-0.5, 0.5])
136
- shear_y = np.array([0.3, -0.3])
137
- shear_z = np.array([0.7, -0.2])
138
- scale_x = np.array([2.2, 1.1])
139
- scale_y = np.array([3.1, 0.9])
140
- scale_z = np.array([0.5, 1.5])
141
-
142
- theta_3d = create_affine_matrix_3d(
143
- angle1,
144
- angle2,
145
- offset_x,
146
- offset_y,
147
- offset_z,
148
- shear_x,
149
- shear_y,
150
- shear_z,
151
- scale_x,
152
- scale_y,
153
- scale_z,
154
- )
155
- return theta_3d
156
-
157
-
158
- class AffineGrid(Base):
159
- @staticmethod
160
- def export_2d_no_reference_evaluator() -> None:
161
- theta_2d = create_theta_2d()
162
- N, C, H, W = len(theta_2d), 3, 5, 6
163
- data_size = (H, W)
164
- for align_corners in (0, 1):
165
- node = onnx.helper.make_node(
166
- "AffineGrid",
167
- inputs=["theta", "size"],
168
- outputs=["grid"],
169
- align_corners=align_corners,
170
- )
171
-
172
- original_grid = construct_original_grid(data_size, align_corners)
173
- grid = apply_affine_transform(theta_2d, original_grid)
174
-
175
- test_name = "test_affine_grid_2d"
176
- if align_corners == 1:
177
- test_name += "_align_corners"
178
- expect(
179
- node,
180
- inputs=[theta_2d, np.array([N, C, H, W], dtype=np.int64)],
181
- outputs=[grid],
182
- name=test_name,
183
- )
184
-
185
- @staticmethod
186
- def export_3d_no_reference_evaluator() -> None:
187
- theta_3d = create_theta_3d()
188
- N, C, D, H, W = len(theta_3d), 3, 4, 5, 6
189
- data_size = (D, H, W)
190
- for align_corners in (0, 1):
191
- node = onnx.helper.make_node(
192
- "AffineGrid",
193
- inputs=["theta", "size"],
194
- outputs=["grid"],
195
- align_corners=align_corners,
196
- )
197
-
198
- original_grid = construct_original_grid(data_size, align_corners)
199
- grid = apply_affine_transform(theta_3d, original_grid)
200
-
201
- test_name = "test_affine_grid_3d"
202
- if align_corners == 1:
203
- test_name += "_align_corners"
204
- expect(
205
- node,
206
- inputs=[theta_3d, np.array([N, C, D, H, W], dtype=np.int64)],
207
- outputs=[grid],
208
- name=test_name,
209
- )
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.reference.ops.op_affine_grid import (
11
+ apply_affine_transform,
12
+ construct_original_grid,
13
+ )
14
+
15
+
16
+ def create_affine_matrix_3d(
17
+ angle1,
18
+ angle2,
19
+ offset_x,
20
+ offset_y,
21
+ offset_z,
22
+ shear_x,
23
+ shear_y,
24
+ shear_z,
25
+ scale_x,
26
+ scale_y,
27
+ scale_z,
28
+ ):
29
+ rot_x = np.stack(
30
+ [
31
+ np.ones_like(angle1),
32
+ np.zeros_like(angle1),
33
+ np.zeros_like(angle1),
34
+ np.zeros_like(angle1),
35
+ np.cos(angle1),
36
+ -np.sin(angle1),
37
+ np.zeros_like(angle1),
38
+ np.sin(angle1),
39
+ np.cos(angle1),
40
+ ],
41
+ axis=-1,
42
+ ).reshape(-1, 3, 3)
43
+ rot_y = np.stack(
44
+ [
45
+ np.cos(angle2),
46
+ np.zeros_like(angle2),
47
+ np.sin(angle2),
48
+ np.zeros_like(angle2),
49
+ np.ones_like(angle2),
50
+ np.zeros_like(angle2),
51
+ -np.sin(angle2),
52
+ np.zeros_like(angle2),
53
+ np.cos(angle2),
54
+ ],
55
+ axis=-1,
56
+ ).reshape(-1, 3, 3)
57
+ shear = np.stack(
58
+ [
59
+ np.ones_like(shear_x),
60
+ shear_x,
61
+ shear_y,
62
+ shear_z,
63
+ np.ones_like(shear_x),
64
+ shear_x,
65
+ shear_y,
66
+ shear_x,
67
+ np.ones_like(shear_x),
68
+ ],
69
+ axis=-1,
70
+ ).reshape(-1, 3, 3)
71
+ scale = np.stack(
72
+ [
73
+ scale_x,
74
+ np.zeros_like(scale_x),
75
+ np.zeros_like(scale_x),
76
+ np.zeros_like(scale_x),
77
+ scale_y,
78
+ np.zeros_like(scale_x),
79
+ np.zeros_like(scale_x),
80
+ np.zeros_like(scale_x),
81
+ scale_z,
82
+ ],
83
+ axis=-1,
84
+ ).reshape(-1, 3, 3)
85
+ translation = np.transpose(np.array([offset_x, offset_y, offset_z])).reshape(
86
+ -1, 1, 3
87
+ )
88
+ rotation_matrix = rot_y @ rot_x @ shear @ scale # (N, 3, 3)
89
+ rotation_matrix = np.transpose(rotation_matrix, (0, 2, 1))
90
+ affine_matrix = np.hstack((rotation_matrix, translation))
91
+ affine_matrix = np.transpose(affine_matrix, (0, 2, 1))
92
+ return affine_matrix.astype(np.float32)
93
+
94
+
95
+ def create_affine_matrix_2d(
96
+ angle1, offset_x, offset_y, shear_x, shear_y, scale_x, scale_y
97
+ ):
98
+ rot = np.stack(
99
+ [np.cos(angle1), -np.sin(angle1), np.sin(angle1), np.cos(angle1)], axis=-1
100
+ ).reshape(-1, 2, 2)
101
+ shear = np.stack(
102
+ [np.ones_like(shear_x), shear_x, shear_y, np.ones_like(shear_x)], axis=-1
103
+ ).reshape(-1, 2, 2)
104
+ scale = np.stack(
105
+ [scale_x, np.zeros_like(scale_x), np.zeros_like(scale_x), scale_y], axis=-1
106
+ ).reshape(-1, 2, 2)
107
+ translation = np.transpose(np.array([offset_x, offset_y])).reshape(-1, 1, 2)
108
+ rotation_matrix = rot @ shear @ scale # (N, 3, 3)
109
+ rotation_matrix = np.transpose(rotation_matrix, (0, 2, 1))
110
+ affine_matrix = np.hstack((rotation_matrix, translation))
111
+ affine_matrix = np.transpose(affine_matrix, (0, 2, 1))
112
+ return affine_matrix.astype(np.float32)
113
+
114
+
115
+ def create_theta_2d():
116
+ angle = np.array([np.pi / 4, np.pi / 3])
117
+ offset_x = np.array([5.0, 2.5])
118
+ offset_y = np.array([-3.3, 1.1])
119
+ shear_x = np.array([-0.5, 0.5])
120
+ shear_y = np.array([0.3, -0.3])
121
+ scale_x = np.array([2.2, 1.1])
122
+ scale_y = np.array([3.1, 0.9])
123
+ theta_2d = create_affine_matrix_2d(
124
+ angle, offset_x, offset_y, shear_x, shear_y, scale_x, scale_y
125
+ )
126
+ return theta_2d
127
+
128
+
129
+ def create_theta_3d():
130
+ angle1 = np.array([np.pi / 4, np.pi / 3])
131
+ angle2 = np.array([np.pi / 6, np.pi / 2])
132
+ offset_x = np.array([5.0, 2.5])
133
+ offset_y = np.array([-3.3, 1.1])
134
+ offset_z = np.array([-1.1, 2.2])
135
+ shear_x = np.array([-0.5, 0.5])
136
+ shear_y = np.array([0.3, -0.3])
137
+ shear_z = np.array([0.7, -0.2])
138
+ scale_x = np.array([2.2, 1.1])
139
+ scale_y = np.array([3.1, 0.9])
140
+ scale_z = np.array([0.5, 1.5])
141
+
142
+ theta_3d = create_affine_matrix_3d(
143
+ angle1,
144
+ angle2,
145
+ offset_x,
146
+ offset_y,
147
+ offset_z,
148
+ shear_x,
149
+ shear_y,
150
+ shear_z,
151
+ scale_x,
152
+ scale_y,
153
+ scale_z,
154
+ )
155
+ return theta_3d
156
+
157
+
158
+ class AffineGrid(Base):
159
+ @staticmethod
160
+ def export_2d_no_reference_evaluator() -> None:
161
+ theta_2d = create_theta_2d()
162
+ N, C, H, W = len(theta_2d), 3, 5, 6
163
+ data_size = (H, W)
164
+ for align_corners in (0, 1):
165
+ node = onnx.helper.make_node(
166
+ "AffineGrid",
167
+ inputs=["theta", "size"],
168
+ outputs=["grid"],
169
+ align_corners=align_corners,
170
+ )
171
+
172
+ original_grid = construct_original_grid(data_size, align_corners)
173
+ grid = apply_affine_transform(theta_2d, original_grid)
174
+
175
+ test_name = "test_affine_grid_2d"
176
+ if align_corners == 1:
177
+ test_name += "_align_corners"
178
+ expect(
179
+ node,
180
+ inputs=[theta_2d, np.array([N, C, H, W], dtype=np.int64)],
181
+ outputs=[grid],
182
+ name=test_name,
183
+ )
184
+
185
+ @staticmethod
186
+ def export_3d_no_reference_evaluator() -> None:
187
+ theta_3d = create_theta_3d()
188
+ N, C, D, H, W = len(theta_3d), 3, 4, 5, 6
189
+ data_size = (D, H, W)
190
+ for align_corners in (0, 1):
191
+ node = onnx.helper.make_node(
192
+ "AffineGrid",
193
+ inputs=["theta", "size"],
194
+ outputs=["grid"],
195
+ align_corners=align_corners,
196
+ )
197
+
198
+ original_grid = construct_original_grid(data_size, align_corners)
199
+ grid = apply_affine_transform(theta_3d, original_grid)
200
+
201
+ test_name = "test_affine_grid_3d"
202
+ if align_corners == 1:
203
+ test_name += "_align_corners"
204
+ expect(
205
+ node,
206
+ inputs=[theta_3d, np.array([N, C, D, H, W], dtype=np.int64)],
207
+ outputs=[grid],
208
+ name=test_name,
209
+ )