
    h]S                     Z    S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr   " S S\5      rg)    N)Base)expect)get_output_shape_auto_pad!get_output_shape_explicit_paddingget_pad_shapepoolc                   |   \ rS rSr\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       r\SS j5       rSrg)MaxPool   Nc                  |   [         R                  R                  SS/S/SS// SQS9n [        R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ///5      R                  [        R                  5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [        R                  5      n[        X/U/SS9  g)`
input_shape: [1, 1, 5, 5]
output_shape: [1, 1, 5, 5]
pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
r
   xy      r   r   r   inputsoutputskernel_shapepads   r         r            	   
                        r                        r%   r&   r'   r'   r'   r   r+   r,   r,   r,   r0   r1   r2   r2   r2   test_maxpool_2d_uint8r   r   nameN)onnxhelper	make_nodenparrayastypeuint8r   noder   r   s      ]/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/maxpool.pyexport_maxpool_2d_uint8MaxPool.export_maxpool_2d_uint8   s     {{$$5EQ % 
 HH ((,,,

 &
 	
 HH -,,,,

 &
 	
 	tC!3JK    c                  |   [         R                  R                  SS/S/SS// SQS9n [        R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ///5      R                  [        R                  5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [        R                  5      n[        X/U/SS9  g)r   r
   r   r   r   r   r   r   r   r"   r(   r-   r3   r4   r5    test_maxpool_2d_precomputed_padsr7   Nr9   r:   r;   r<   r=   r>   float32r   r@   s      rB   "export_maxpool_2d_precomputed_pads*MaxPool.export_maxpool_2d_precomputed_pads>   s     {{$$5EQ % 
 HH ((,,,

 &
 	
 HH -,,,,

 &
 	
 	tC!3UVrE   c                     [         R                  R                  SS/SS/SS// SQS9n [        R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ///5      R                  [        R                  5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [        R                  5      n[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ///5      R                  [        R                  5      n[        U U/X#/SS9  g)r   r
   r   r   zr   r   r   r   r   r"   r(   r-   r3   r4   r5   )r$   r%   r&   r&   r&   )r*   r   r+   r+   r+   )r/   r0   r1   r1   r1   ,test_maxpool_with_argmax_2d_precomputed_padsr7   N	r9   r:   r;   r<   r=   r>   rI   int64r   rA   r   r   rM   s       rB   .export_maxpool_with_argmax_2d_precomputed_pads6MaxPool.export_maxpool_with_argmax_2d_precomputed_padsi   s    {{$$5#JQ % 
 HH ((,,,

 &
 	
 HH -,,,,

 &
 	
 HH -,,,,

 &
 	
 	3F?		
rE   c                  j   [         R                  R                  SS/S/SS/SS/S9n [        R                  " / SQ/ SQ/ SQ/ S	Q/ S
Q///5      R                  [        R                  5      n[        R                  " SS/SS////5      R                  [        R                  5      n[        X/U/SS9  g)6
input_shape: [1, 1, 5, 5]
output_shape: [1, 1, 2, 2]
r
   r   r   r   r   r   r   stridesr   r   r"   r(   r-   r   r    r*   r+   #test_maxpool_2d_precomputed_stridesr7   NrH   r@   s      rB   %export_maxpool_2d_precomputed_strides-MaxPool.export_maxpool_2d_precomputed_strides   s     {{$$secU!QRSUVQW % 
 HH ((,,,

 &
 	
 HHAR)*+,33BJJ?qc0U	
rE   c            	         [         R                  R                  SS/SS/SS/SS/SS9n [        R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ///5      R                  [        R                  5      n[        R                  " SS/SS////5      R                  [        R                  5      n[        R                  " SS/SS////5      R                  [        R                  5      n[        U U/X#/SS9  g)rU   r
   r   r   rM   r   r   )r   r   r   rW   storage_orderr   r   r"   r(   r-   r   r    r*   r+   r   r)   r   r   /test_maxpool_with_argmax_2d_precomputed_stridesr7   NrO   rQ   s       rB   1export_maxpool_with_argmax_2d_precomputed_strides9MaxPool.export_maxpool_with_argmax_2d_precomputed_strides   s     {{$$5#JQF % 
 HH ((,,,

 &
 	
 HHAR)*+,33BJJ?HHB!R)*+,33BHH=3FB		
rE   c            	      r   [         R                  R                  SS/S/SS/SS/SS9n [        R                  " / SQ/ S	Q/ S
Q/ SQ/ SQ///5      R                  [        R                  5      n[        R                  " / SQ/ SQ/ SQ///5      R                  [        R                  5      n[        X/U/SS9  g)z`
input_shape: [1, 1, 5, 5]
output_shape: [1, 1, 3, 3]
pad_shape: [2, 2] -> [1, 1, 1, 1] by axis
r
   r   r   r   r   
SAME_UPPER)r   r   r   rW   auto_padr   r   r"   r(   r-   )r   r    r!   )r*   r+   r,   )r/   r1   r2   &test_maxpool_2d_precomputed_same_upperr7   NrH   r@   s      rB   (export_maxpool_2d_precomputed_same_upper0MaxPool.export_maxpool_2d_precomputed_same_upper   s     {{$$5EQF! % 
 HH ((,,,

 &
 	
 HH
L,?@ABII"**Uqc0X	
rE   c                  ^   [         R                  R                  SS/S/S/S9n [        R                  R                  SSS5      R                  [        R                  5      n[        R                  " U5      nS	nS/nS/n[        X2SS	 XE5      u  pgUn[        XXEUS
5      n	[        X/U	/SS9  g	)z2
input_shape: [1, 3, 32]
output_shape: [1, 3, 31]
r
   r   r   r   r   r   r   r   r       NMAXtest_maxpool_1d_defaultr7   r9   r:   r;   r<   randomrandnr>   rI   shaper   r   r   
rA   r   x_shaper   r   rW   	out_shape_paddedr   s
             rB   export_maxpool_1d_default!MaxPool.export_maxpool_1d_default	  s     {{$$5E	 % 
 IIOOAq"%,,RZZ8((1+s#8!"+|
	 ,EJtC!3LMrE   c                  ^   [         R                  R                  SS/S/SS/S9n [        R                  R                  SSSS5      R                  [        R                  5      n[        R                  " U5      nS	nS
nSn[        X2SS	 XE5      u  pgUn[        XXEUS5      n	[        X/U	/SS9  g	)z:
input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 31, 31]
r
   r   r   r   rg   r   r   rh   Nr   r   r   r   ri   test_maxpool_2d_defaultr7   rk   ro   s
             rB   export_maxpool_2d_default!MaxPool.export_maxpool_2d_default"  s     {{$$5EQ	 % 
 IIOOAq"b)00<((1+8!"+|
	 ,EJtC!3LMrE   c                  h   [         R                  R                  SS/S// SQS9n [        R                  R                  SSSSS5      R                  [        R                  5      n[        R                  " U5      nS	n/ SQn/ S
Qn[        X2SS	 XE5      u  pgUn[        XXEUS5      n	[        X/U	/SS9  g	)zB
input_shape: [1, 3, 32, 32, 32]
output_shape: [1, 3, 31, 31, 31]
r
   r   r   r   r   r   rg   r   r   rh   Nr   r   r   r   ri   test_maxpool_3d_defaultr7   rk   ro   s
             rB   export_maxpool_3d_default!MaxPool.export_maxpool_3d_default;  s     {{$$5E"	 % 
 IIOOAq"b"-44RZZ@((1+ 8!"+|
	 ,EJtC!3LMrE   c            	         [         R                  R                  SS/S/SS/SS9n [        R                  R                  SSS	S	5      R                  [        R                  5      n[        R                  " U5      nS
nSn[        SUSS X45      n[        SUSS X4U5      nUS   S-  nUS   U-
  nUS   S-  n	US   U	-
  n
[        R                  " USSXx4X44S[        R                  S9nXyX/n[        XX4USU5      n[        X/U/SS9  g)zd
input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 32, 32]
pad_shape: [1, 1] -> [0, 1, 0, 1] by axis
r
   r   r   r   ra   r   r   r   rb   r   r   rh   rw   rx   Nr   r   r   constantmodeconstant_valuesri   test_maxpool_2d_same_upperr7   r9   r:   r;   r<   rl   rm   r>   rI   rn   r   r   padnanr   r   )rA   r   rp   r   rW   rq   	pad_shapepad_top
pad_bottompad_left	pad_rightrs   r   r   s                 rB   export_maxpool_2d_same_upper$MaxPool.export_maxpool_2d_same_upperT  s<    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 A,!#q\G+
Q<1$aL8+	Vg2X4IJFF	
 :9,E4PtC!3OPrE   c            	         [         R                  R                  SS/S/SS/SS9n [        R                  R                  SSS	S	5      R                  [        R                  5      n[        R                  " U5      nS
nSn[        SUSS X45      n[        SUSS X4U5      nUS   S-  nUS   U-
  nUS   S-  n	US   U	-
  n
[        R                  " USSX4X44S[        R                  S9nXXy/n[        XX4USU5      n[        X/U/SS9  g)zd
input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 32, 32]
pad_shape: [1, 1] -> [1, 0, 1, 0] by axis
r
   r   r   r   
SAME_LOWERr   r   r   rh   rw   rx   Nr   r   r   r   ri   test_maxpool_2d_same_lowerr7   r   )rA   r   rp   r   rW   rq   r   r   r   r   r   rs   r   r   s                 rB   export_maxpool_2d_same_lower$MaxPool.export_maxpool_2d_same_lower{  s<    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 q\Q&
A,+aLA%	Q<)+Vg2X4IJFF	
 :9,E4PtC!3OPrE   c            	         [         R                  R                  SS/S/SS// SQS9n [        R                  R                  SSSS5      R                  [        R                  5      n[        R                  " U5      nS	nS
nS=n=n=pxXhXW/n	[        XSS X45      u  p[        R                  " USSXe4X44S[        R                  S9n[        XX4U
SU	5      n[        X/U/SS9  g)zd
input_shape: [1, 3, 28, 28]
output_shape: [1, 3, 30, 30]
pad_shape: [4, 4] -> [2, 2, 2, 2] by axis
r
   r   r   r   r   r   r      r   r   rx   r   Nr   r   r   ri   test_maxpool_2d_padsr7   )r9   r:   r;   r<   rl   rm   r>   rI   rn   r   r   r   r   r   )rA   r   rp   r   rW   r   r   r   r   r   rq   rs   r   s                rB   export_maxpool_2d_padsMaxPool.export_maxpool_2d_pads  s     {{$$5EQ % 
 IIOOAq"b)00<((1+677
7W7y:9;!"+|
	 Vg2X4IJFF	
 ,E4PtC!3IJrE   c                  d   [         R                  R                  SS/S/SS/SS/S9n [        R                  R                  SSSS5      R                  [        R                  5      n[        R                  " U5      nS	nS
nSn[        X2SS	 XE5      u  pcUn[        XrXEUS5      n[        X/U/SS9  g	)z:
input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 10, 10]
r
   r   r   r   r   rV   r   rh   N)r   r   r   r   ri   test_maxpool_2d_stridesr7   rk   )	rA   r   rp   r   r   rW   rq   rs   r   s	            rB   export_maxpool_2d_strides!MaxPool.export_maxpool_2d_strides  s     {{$$secU!QRSUVQW % 
 IIOOAq"b)00<((1+;!"+|
	 ,EJtC!3LMrE   c            	      f   [         R                  R                  SS/S/SS/SS/SS9n [        R                  " / SQ/ S	Q/ S
Q/ SQ///5      R                  [        R                  5      n[        R                  " SS/SS////5      R                  [        R                  5      n[        X/U/SS9  g)6
input_shape: [1, 1, 4, 4]
output_shape: [1, 1, 2, 2]
r
   r   r   r   r   T)r   r   r   rW   	ceil_moder   r   r   r   r   r   r   r   r    r!   r#   r$   r%   r&   r'   r)   r#   r$   r'   r)   test_maxpool_2d_ceilr7   NrH   r@   s      rB   export_maxpool_2d_ceilMaxPool.export_maxpool_2d_ceil  s     {{$$5EQF % 
 HH %$'(		
 &
 	
 HHR2r(+,-.55bjjAtC!3IJrE   c            	      j   [         R                  R                  SS/S/SS/SS/SS/S9n [        R                  " / SQ/ SQ/ S	Q/ S
Q///5      R                  [        R                  5      n[        R                  " SS/SS////5      R                  [        R                  5      n[        X/U/SS9  g)r   r
   r   r   r   r   r   r   r   rW   	dilationsr   r   r   r   r#   r$   r'   r)   test_maxpool_2d_dilationsr7   NrH   r@   s      rB   export_maxpool_2d_dilations#MaxPool.export_maxpool_2d_dilations  s     {{$$5EQF!f % 
 HH %$'(		
 &
 	
 HHR2r(+,-.55bjjAtC!3NOrE   c            
         [         R                  R                  SS/S// SQ/ SQ/ SQS9n [        R                  " / SQ/ SQ/ S	Q/ S
Q// SQ/ SQ/ S	Q/ S
Q// SQ/ SQ/ S	Q/ S
Q// SQ/ SQ/ S	Q/ S
Q////5      R                  [        R                  5      n[        R                  " SS/SS//SS/SS/////5      R                  [        R                  5      n[        X/U/SS9  g)<
input_shape: [1, 1, 4, 4, 4]
output_shape: [1, 1, 2, 2, 2]
r
   r   r   r}   r~   r   r   r   r   r   r#   r$   r'   r)   test_maxpool_3d_dilationsr7   NrH   r@   s      rB   export_maxpool_3d_dilations#MaxPool.export_maxpool_3d_dilations  s    {{$$5E" % 
 HH
 )(+,	 )(+,	 )(+,	 )(+,	'
> &
? 	
@ HH"bB8,Bx"b.BCDEFMMJJ
 	tC!3NOrE   c                     / SQn / SQn/ SQnSn[         R                  R                  SS/S// SQ/ SQU S9n[        R                  " / SQ/ S	Q/ S
Q/ SQ// SQ/ S	Q/ S
Q/ SQ// SQ/ S	Q/ S
Q/ SQ// SQ/ S	Q/ S
Q/ SQ////5      R                  [        R                  5      nUR                  SS n[        SXaX US9u  pxUn	[        U	SS/UQ7UUUSUU S9n
[        XE/U
/SS9  g)r   r}   r~   Fr
   r   r   r   r   r   r   r   r   Nr   r   ri   r   &test_maxpool_3d_dilations_use_ref_implr7   )r9   r:   r;   r<   r=   r>   rI   rn   r   r   r   )r   r   rW   r   rA   r   rp   rq   r   rs   r   s              rB   (export_maxpool_3d_dilations_use_ref_impl0MaxPool.export_maxpool_3d_dilations_use_ref_implJ  s5    	 	{{$$5E" % 
 HH
 )(+,	 )(+,	 )(+,	 )(+,	'
> &
? 	
B ''!"+;'y
	 G	
 	qc0X	
rE   c                     Sn SnSnSnSn[         R                  R                  SS/S/UUUUS	9n[        R                  R
                  " S
S
/U Q76 R                  [        R                  5      n[        S XX1US9u  px[        R                  " USSUS   US   4US
   US   4US   US   44SSS9n	[        U	S
S
/U Q7UUUSUUS9n
[        UU/U
/SS9  g )N)rh   rh   rh   r}   )r   r   r   )r   r   r   Tr
   r   r   )r   r   r   rW   r   r   r   r   r   r   r   r   r   r   r   r   ri   r   ,test_maxpool_3d_dilations_use_ref_impl_larger7   )r9   r:   r;   r<   rl   rm   r>   rI   r   r   r   r   )rp   r   r   rW   r   rA   r   rq   r   rs   r   s              rB   .export_maxpool_3d_dilations_use_ref_impl_large6MaxPool.export_maxpool_3d_dilations_use_ref_impl_large  s*   	 	{{$$5E% % 
 IIOOAq+7+222::>;'y
	 a$q'"a$q'"a$q'" 
 G	
 	3C?		
rE    )returnN)__name__
__module____qualname____firstlineno__staticmethodrC   rJ   rR   rY   r^   rd   rt   rz   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   rE   rB   r
   r
      s   (L (LT (W (WT :
 :
x 
 
6 "
 "
H 
 
B N N0 N N0 N N0 $Q $QL $Q $QL K KB N N* K K: P P: 1P 1Pf D
 D
L 1
 1
rE   r
   )numpyr<   r9   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_pool_commonr   r   r   r   r
   r   rE   rB   <module>r      s+   
   , . q

d q

rE   