
    Si_V                    f    S SK Jr  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)    )annotationsN)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S j5       rSrg)MaxPool   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)_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-   r1   r2   r3   r3   r3   test_maxpool_2d_uint8r   r   nameN)onnxhelper	make_nodenparrayastypeuint8r   noder   r   s      b/var/www/html/ai-image-ml/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.   r4   r5   r6    test_maxpool_2d_precomputed_padsr8   Nr:   r;   r<   r=   r>   r?   float32r   rA   s      rC   "export_maxpool_2d_precomputed_pads*MaxPool.export_maxpool_2d_precomputed_pads>   s     {{$$5EQ % 
 HH ((,,,

 &
 	
 HH -,,,,

 &
 	
 	tC!3UVrF   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.   r4   r5   r6   )r%   r&   r'   r'   r'   )r+   r,   r   r   r   )r0   r1   r2   r2   r2   ,test_maxpool_with_argmax_2d_precomputed_padsr8   N	r:   r;   r<   r=   r>   r?   rJ   int64r   rB   r   r   rN   s       rC   .export_maxpool_with_argmax_2d_precomputed_pads6MaxPool.export_maxpool_with_argmax_2d_precomputed_padsh   s    {{$$5#JQ % 
 HH ((,,,

 &
 	
 HH -,,,,

 &
 	
 HH -,,,,

 &
 	
 	3F?		
rF   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)5input_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_stridesr8   NrI   rA   s      rC   %export_maxpool_2d_precomputed_strides-MaxPool.export_maxpool_2d_precomputed_strides   s    
 {{$$secU!QRSUVQW % 
 HH ((,,,

 &
 	
 HHAR)*+,33BJJ?qc0U	
rF   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)rV   r   r   r   rN   r   r   )r   r   r   rX   storage_orderr   r   r#   r)   r.   r   r!   r+   r   r   r*   r    r,   /test_maxpool_with_argmax_2d_precomputed_stridesr8   NrP   rR   s       rC   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		
rF   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   rX   auto_padr   r   r#   r)   r.   )r   r!   r"   )r+   r   r-   )r0   r2   r3   &test_maxpool_2d_precomputed_same_upperr8   NrI   rA   s      rC   (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	
rF   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	)z1input_shape: [1, 3, 32]
output_shape: [1, 3, 31]
r   r   r   r   r   r   r   r   r       NMAXtest_maxpool_1d_defaultr8   r:   r;   r<   r=   randomrandnr?   rJ   shaper   r	   r   
rB   r   x_shaper   r   rX   	out_shape_paddedr   s
             rC   export_maxpool_1d_default!MaxPool.export_maxpool_1d_default  s    
 {{$$5E	 % 
 IIOOAq"%,,RZZ8((1+s#8!"+|
	 ,EJtC!3LMrF   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	)z9input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 31, 31]
r   r   r   r   rh   r   r   ri   Nr   r   r   r   rj   test_maxpool_2d_defaultr8   rl   rp   s
             rC   export_maxpool_2d_default!MaxPool.export_maxpool_2d_default  s    
 {{$$5EQ	 % 
 IIOOAq"b)00<((1+8!"+|
	 ,EJtC!3LMrF   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	)zAinput_shape: [1, 3, 32, 32, 32]
output_shape: [1, 3, 31, 31, 31]
r   r   r   r   r   r   rh   r   r   ri   Nr   r   r   r   rj   test_maxpool_3d_defaultr8   rl   rp   s
             rC   export_maxpool_3d_default!MaxPool.export_maxpool_3d_default4  s    
 {{$$5E"	 % 
 IIOOAq"b"-44RZZ@((1+ 8!"+|
	 ,EJtC!3LMrF   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X5      n[        X/U/SS9  g)zcinput_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   rb   r   r   r   rc   r   r   ri   rx   ry   Nr   r   r   constantmodeconstant_valuesrj   test_maxpool_2d_same_upperr8   r:   r;   r<   r=   rm   rn   r?   rJ   ro   r   r   padnanr	   r   )rB   r   rq   r   rX   rr   	pad_shapepad_top
pad_bottompad_left	pad_rightrt   r   r   s                 rC   export_maxpool_2d_same_upper$MaxPool.export_maxpool_2d_same_upperL  s<    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 A,!#q\G+
Q<1$aL8+	Vg2X4IJFF	
 :9,E4VtC!3OPrF   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X5      n[        X/U/SS9  g)zcinput_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   ri   rx   ry   Nr   r   r   r   rj   test_maxpool_2d_same_lowerr8   r   )rB   r   rq   r   rX   rr   r   r   r   r   r   rt   r   r   s                 rC   export_maxpool_2d_same_lower$MaxPool.export_maxpool_2d_same_lowerr  s<    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 q\Q&
A,+aLA%	Q<)+Vg2X4IJFF	
 :9,E4VtC!3OPrF   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[        UUUUU
SUU	S9n[        X/U/SS9  g)zcinput_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   ry   r   Nr   r   r   rj   )pads_requiredr   test_maxpool_2d_padsr8   )r:   r;   r<   r=   rm   rn   r?   rJ   ro   r   r   r   r	   r   )rB   r   rq   r   rX   r   r   r   r   r   rr   
extra_padsrt   r   s                 rC   export_maxpool_2d_padsMaxPool.export_maxpool_2d_pads  s    {{$$5EQ % 
 IIOOAq"b)00<((1+677
7W7y:9 A!"+|!
	 Vg2X4IJFF	
 $	
 	tC!3IJrF   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	)z9input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 10, 10]
r   r   r   r   r   rW   r   ri   N)r   r   r   r   rj   test_maxpool_2d_stridesr8   rl   )	rB   r   rq   r   r   rX   rr   rt   r   s	            rC   export_maxpool_2d_strides!MaxPool.export_maxpool_2d_strides  s    
 {{$$secU!QRSUVQW % 
 IIOOAq"b)00<((1+;!"+|
	 ,EJtC!3LMrF   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)5input_shape: [1, 1, 4, 4]
output_shape: [1, 1, 2, 2]
r   r   r   r   r   Tr   r   r   rX   	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_ceilr8   NrI   rA   s      rC   export_maxpool_2d_ceilMaxPool.export_maxpool_2d_ceil  s    
 {{$$5EQF % 
 HH %$'(		
 &
 	
 HHR2r(+,-.55bjjAtC!3IJrF   c            	     T   [         R                  R                  SS/S/SS/SS/SS9n [        R                  " SS/SS	////5      R                  [        R                  5      n[        R                  " S////5      R                  [        R                  5      n[        U U/U/S
S9  g)z5input_shape: [1, 1, 2, 2]
output_shape: [1, 1, 1, 1]
r   r   r   r   r   Tr   r   r   .test_maxpool_2d_ceil_output_size_reduce_by_oner8   NrI   rA   s      rC   0export_maxpool_2d_ceil_output_size_reduce_by_one8MaxPool.export_maxpool_2d_ceil_output_size_reduce_by_one  s    
 {{$$5EQF % 
 HHAA'()*11"**=HHugY&&rzz23CA		
rF   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   rX   	dilationsr   r   r   r   r$   r%   r(   r*   test_maxpool_2d_dilationsr8   NrI   rA   s      rC   export_maxpool_2d_dilations#MaxPool.export_maxpool_2d_dilations  s    
 {{$$5EQF!f % 
 HH %$'(		
 &
 	
 HHR2r(+,-.55bjjAtC!3NOrF   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_dilationsr8   NrI   rA   s      rC   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OrF   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S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   rj   r   r   r   &test_maxpool_3d_dilations_use_ref_implr8   )r:   r;   r<   r=   r>   r?   rJ   ro   r   r	   r   )r   r   rX   r   rB   r   rq   rr   r   rt   r   s              rC   (export_maxpool_3d_dilations_use_ref_impl0MaxPool.export_maxpool_3d_dilations_use_ref_impl[  s8   
 	 	{{$$5E" % 
 HH
 )(+,	 )(+,	 )(+,	 )(+,	'
> &
? 	
B ''!"+;'y
	 G

 	qc0X	
rF   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S US9	n
[        UU/U
/SS9  g )N)ri   ri   ri   r~   )r   r   r   )r   r   r   Tr   r   r   )r   r   r   rX   r   r   r   r   r   r   r   r   r   r   r   r   rj   r   ,test_maxpool_3d_dilations_use_ref_impl_larger8   )r:   r;   r<   r=   rm   rn   r?   rJ   r   r   r	   r   )rq   r   r   rX   r   rB   r   rr   r   rt   r   s              rC   .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?		
rF    N)returnNone)__name__
__module____qualname____firstlineno__staticmethodrD   rK   rS   rZ   r_   re   ru   r{   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   rF   rC   r   r      s   'L 'LR 'W 'WR 9
 9
v 
 
4 !
 !
F 
 
@ N N. N N. N N. #Q #QJ #Q #QJ 'K 'KR N N( K K8 
 
, P P8 0P 0Pd D
 D
L 2
 2
rF   r   )
__future__r   numpyr=   r:   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_pool_commonr   r   r   r	   r   r   rF   rC   <module>r      s.    #   , . B
d B
rF   