
    SiR                    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                  h   \ 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rg)AveragePool   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    g      !@r!   )g      #@r"   g      %@r$         '@)r%   g      )@r&         +@r'   )      -@r(   g      /@r*   g     0@)r+   g     1@r,   g     2@r   $test_averagepool_2d_precomputed_padsr   r   nameNonnxhelper	make_nodenparrayastypefloat32r   noder   r   s      f/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/backend/test/case/node/averagepool.py&export_averagepool_2d_precomputed_pads2AveragePool.export_averagepool_2d_precomputed_pads   s     {{$$5EQ % 
 HH ((,,,

 &
 	
 HH ,1020

 &
 	
 	qc0V	
    c            	        [         R                  R                  SS/S/SS// SQ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/ SQ/ SQ///5      R                  [        R                  5      n[        U U/U/SS9  g)r   r   r   r   r   r   r   r   r   r   r   count_include_padr   r   r#   r)   r.   )g)\(@g@g333333@gRQ@gQ	@)g=
ףp=@g@ @g)\(@gGz@)g@g      $@g      *@皙%@rL   )gףp=
@g333333#@g(@g{Gz$@gGz@)g{Gz@rL   rM   g(\!@g\(\@6test_averagepool_2d_precomputed_pads_count_include_padr9   Nr;   rC   s      rE   8export_averagepool_2d_precomputed_pads_count_include_padDAveragePool.export_averagepool_2d_precomputed_pads_count_include_pad@   s     {{$$5EQ % 
 HH ((,,,

 &
 	
 HH A@CBA

 &
 	
 	3CI		
rH   c                 l   [         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[        U U/U/SS9  g)z5input_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_averagepool_2d_precomputed_stridesr9   Nr;   rC   s      rE   )export_averagepool_2d_precomputed_strides5AveragePool.export_averagepool_2d_precomputed_stridesp   s    
 {{$$5EQF % 
 HH ((,,,

 &
 	
 HHAR)*+,33BJJ?3C:		
rH   c            	     t   [         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[        U U/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   rS   auto_padr   r   r#   r)   r.   )r   g      @r   )r5   r&   r7   )r   g     4@r0   *test_averagepool_2d_precomputed_same_upperr9   Nr;   rC   s      rE   ,export_averagepool_2d_precomputed_same_upper8AveragePool.export_averagepool_2d_precomputed_same_upper   s     {{$$5EQF! % 
 HH ((,,,

 &
 	
 HH%5~FGHIPPJJ
 	3C=		
rH   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AVGtest_averagepool_1d_defaultr9   r<   r=   r>   r?   randomrandnrA   rB   shaper   r	   r   
rD   r   x_shaper   r   rS   	out_shape_paddedr   s
             rE   export_averagepool_1d_default)AveragePool.export_averagepool_1d_default   s    
 {{$$5E	 % 
 IIOOAq"%,,RZZ8((1+s#8!"+|
	 ,EJtC!3PQrH   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   r^   r   r   r_   Nr   r   r   r   r`   test_averagepool_2d_defaultr9   rb   rf   s
             rE   export_averagepool_2d_default)AveragePool.export_averagepool_2d_default   s    
 {{$$5EQ	 % 
 IIOOAq"b)00<((1+8!"+|
	 ,EJtC!3PQrH   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   r^   r   r   r_   Nr   r   r   r   r`   test_averagepool_3d_defaultr9   rb   rf   s
             rE   export_averagepool_3d_default)AveragePool.export_averagepool_3d_default   s    
 {{$$5E"	 % 
 IIOOAq"b"-44RZZ@((1+ 8!"+|
	 ,EJtC!3PQrH   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XyX4n[        UUUUUSUUS9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   rX   r   r   r   rY   r   r   r_   rn   ro   Nr   r   r   constantmodeconstant_valuesr`   pads_requiredr   test_averagepool_2d_same_upperr9   r<   r=   r>   r?   rc   rd   rA   rB   re   r   r   padnanr	   r   )rD   r   rg   r   rS   rh   	pad_shapepad_top
pad_bottompad_left	pad_rightrj   r   r   s                 rE    export_averagepool_2d_same_upper,AveragePool.export_averagepool_2d_same_upper   sN    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 A,!#q\G+
Q<1$aL8+	Vg2X4IJFF	
 :9	
 	tC!3STrH   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XXy4n[        UUUUUSUUS9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_LOWERrz   r   r   r_   rn   ro   Nr   r{   r|   r}   r`   r   test_averagepool_2d_same_lowerr9   r   )rD   r   rg   r   rS   rh   r   r   r   r   r   rj   r   r   s                 rE    export_averagepool_2d_same_lower,AveragePool.export_averagepool_2d_same_lower/  sN    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|
	 "'!"+|i
	 q\Q&
A,+aLA%	Q<)+Vg2X4IJFF	
 :9	
 	tC!3STrH   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SnSnSnXhXW/n	[        XSS X4SS9u  p[        R                  " USSUS   US   4US   US   44S[        R                  S9n[        UUUUU
SUU	S9n[        X/U/SS9  g)cinput_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   ro   r   NF	ceil_moder{   r   r|   r}   r`   r   test_averagepool_2d_padsr9   )r<   r=   r>   r?   rc   rd   rA   rB   re   r   r   r   r	   r   )rD   r   rg   r   rS   r   r   r   r   r   rh   
extra_padsrj   r   s                 rE   export_averagepool_2d_pads&AveragePool.export_averagepool_2d_pads^  s-    {{$$5EQ % 
 IIOOAq"b)00<((1+
	:9 A!"+|!
	 A
1.A
1.	 FF

 $	
 	tC!3MNrH   c                    [         R                  R                  SS/S/SS// SQ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SnSnSnSn	XyXh/n
[        XSS XEUSS9u  p[        R                  " USSUS   US   4US   US   44SSS9n[        UUUUUSUU
SS9	n[        U U/U/SS9  g)r   r   r   r   r   r   r   rJ   r   ro   r   r   NFr   r{   r   r|   r}   r`   )r   r   rK   *test_averagepool_2d_pads_count_include_padr9   )r<   r=   r>   r?   rc   rd   rA   rB   re   r   r   r	   r   )rD   r   rg   	dilationsr   rS   r   r   r   r   r   rh   r   rj   r   s                  rE   ,export_averagepool_2d_pads_count_include_pad8AveragePool.export_averagepool_2d_pads_count_include_pad  s=    {{$$5EQ % 
 IIOOAq"b)00<((1+	
	:9 A!"+|i5!
	 A
1.A
1.	 

 $

 	3C=		
rH   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USS X4SS9u  pVUn[        UUUUUSUSS9n[        X/U/SS9  g)z9input_shape: [1, 3, 32, 32]
output_shape: [1, 3, 10, 10]
r   r   r   r   r   rR   r   r_   )r   r   r   Nr   Fr   r`   r   test_averagepool_2d_stridesr9   rb   )	rD   r   rg   r   rS   rh   r   rj   r   s	            rE   export_averagepool_2d_strides)AveragePool.export_averagepool_2d_strides  s    
 {{$$5EQF % 
 IIOOAq"b)00<((1+;'!"+|
	 	
 	tC!3PQrH   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   rS   r   r   r   r   r   r   r   r   r    r!   r"   r$   r%   r&   r'   r(   r*   r   r4   r%   r6   test_averagepool_2d_ceilr9   Nr;   rC   s      rE   export_averagepool_2d_ceil&AveragePool.export_averagepool_2d_ceil  s    
 {{$$5EQF % 
 HH %$'(		
 &
 	
 HHC2t*-./077

CtC!3MNrH   c                    [         R                  R                  SS/S/SS/SS// SQSSS9n [        R                  " S	S
/SS//SS/SS//SS/SS////5      R                  [        R                  5      n[        R                  " S//S//S////5      R                  [        R                  5      n[        U U/U/SS9  g)z5input_shape: [1, 3, 2, 2]
output_shape: [1, 3, 1, 1]
r   r   r   r   )r   r   r   r   Tr   )r   r   r   rS   r   r   rK   g~jt?g1w-!?g&S:?gꕲq?gK46?g$?g	h"lx?goŏ1?g鷯?gc=yX?gv?g"~j?gz6>W?gX2ı.?gec]?2test_averagepool_2d_ceil_last_window_starts_on_padr9   Nr;   rC   s      rE   4export_averagepool_2d_ceil_last_window_starts_on_pad@AveragePool.export_averagepool_2d_ceil_last_window_starts_on_pad  s    
 {{$$5EQF % 	
 HH f%'78f%'78f%'78
 &
 	
 HHzVH:z:;<CCBJJO3CE		
rH   c            
     l   [         R                  R                  S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   Tr   r   r   rS   r   r   r   r   r   r   r   r   r"   r$   test_averagepool_2d_dilationsr9   Nr;   rC   s      rE   export_averagepool_2d_dilations+AveragePool.export_averagepool_2d_dilations'  s    
 {{$$5EQF!f % 
 HH %$'(		
 &
 	
 HHAR)*+,33BJJ?tC!3RSrH   c            
        [         R                  R                  SS/S// SQ/ SQ/ SQS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)r   r   r   r   rt   ru   Tr   r   r   r   r   r   r   r"   r$   #test_averagepool_3d_dilations_smallr9   Nr;   rC   s      rE   export_averagepool_3d_dilations+AveragePool.export_averagepool_3d_dilationsH  s   
 {{$$5E" % 
 HH
 )(+,	 )(+,	 )(+,	 )(+,	'
> &
? 	
B HH!Q"b*aVb"X,>?@ABII"**Uqc0U	
rH   c                    Sn SnSnSnSnS H  nS H  n[         R                  R                  SS	/S
/UUUUUS9n[        R                  R
                  " SS/U Q76 R                  [        R                  5      n[        S U UUUUS9u  p[        R                  " USSU	S   U	S   4U	S   U	S   4U	S   U	S   44SUS:X  a  SO[        R                  S9n
[        U
SS/U Q7UUUSU	S UUS9
nSU SU 3n[        Xg/U/US9  M     M     g )N)r_   r_   r_   rt   )r   r   r   )r   r   r   r   )r   r   )TFr   r   r   )r   r   r   rS   r   rK   r   r   )r   r   r{   r   r   r   r   r|   r}   r`   )r   r   r   rK   9test_averagepool_3d_dilations_large_count_include_pad_is__ceil_mode_is_r9   )r<   r=   r>   r?   rc   rd   rA   rB   r   r   r   r	   r   )rg   r   r   rS   rK   r   rD   r   rh   r   rj   r   	test_names                rE   %export_averagepool_3d_dilations_large1AveragePool.export_averagepool_3d_dilations_large  s|   	 !'*	{{,,!5 E!-#'&7' - 	 IIOOAq373::2::F(I '')%	 #A
16#A
16#A
16 $):a)?ARVV $G$ ",'&7 XXiWjjx  zC  yD  E	tC!9E_ + "(rH    N)returnNone)__name__
__module____qualname____firstlineno__staticmethodrF   rO   rU   r[   rk   rq   rw   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   rH   rE   r   r      st   )
 )
V -
 -
^ 
 
B #
 #
J R R. R R. R R. ,U ,U\ ,U ,U\ .O .O` 6
 6
p R R@ O O8 
 
@ T T@ 4
 4
l 7F 7FrH   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   rH   rE   <module>r      s0    #   , . d
F$ d
FrH   