
    /jR                    n    d dl mZ d dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZ  G d de          ZdS )    )annotationsN)Base)expect)get_output_shape_auto_pad!get_output_shape_explicit_paddingget_pad_shapepoolc                     e Zd Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Z	edd	            Z
edd
            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            Zedd            ZdS )AveragePoolreturnNonec                    t           j                            ddgdgddgg d          } t          j        g dg dg d	g d
g dggg                              t          j                  }t          j        g dg dg dg dg dggg                              t          j                  }t          | |g|gd           dS )winput_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!   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      l/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/averagepool.py&export_averagepool_2d_precomputed_padsz2AveragePool.export_averagepool_2d_precomputed_pads   s4    {$$5EQ % 
 
 H ((((,,,,,,,,,

 
 &

 	
 H ,++111000222000

 
 &

 	
 	!qc0V	
 	
 	
 	
 	
 	
    c                    t           j                            ddgdgddgg dd          } t          j        g dg d	g d
g dg dggg                              t          j                  }t          j        g dg dg dg dg dggg                              t          j                  }t          | |g|gd           dS )r   r   r   r   r   r   r   r   r   r   r   count_include_padr   r   r$   r*   r0   )g)\(@g@g333333@gRQ@gQ	@)g=
ףp=@g@ @g)\(@gGz@)g@g      $@g      *@皙%@rM   )gףp=
@g333333#@g(@g{Gz$@gGz@)g{Gz@rM   rN   g(\!@g\(\@6test_averagepool_2d_precomputed_pads_count_include_padr;   Nr=   rE   s      rG   8export_averagepool_2d_precomputed_pads_count_include_padzDAveragePool.export_averagepool_2d_precomputed_pads_count_include_pad@   s:    {$$5EQ % 
 
 H ((((,,,,,,,,,

 
 &

 	
 H A@@@@@CCCBBBAAA

 
 &

 	
 	3CI		
 	
 	
 	
 	
 	
rI   c                 z   t           j                            ddgdgddgddg          } t          j        g dg dg dg d	g d
ggg                              t          j                  }t          j        ddgddgggg                              t          j                  }t          | |g|gd           dS )zEinput_shape: [1, 1, 5, 5]
        output_shape: [1, 1, 2, 2]
        r   r   r   r   r   r   r   stridesr   r   r$   r*   r0   r   r   r(   r+   'test_averagepool_2d_precomputed_stridesr;   Nr=   rE   s      rG   )export_averagepool_2d_precomputed_stridesz5AveragePool.export_averagepool_2d_precomputed_stridesp   s   
 {$$5EQF % 
 
 H ((((,,,,,,,,,

 
 &

 	
 HAR)*+,,33BJ??3C:		
 	
 	
 	
 	
 	
rI   c                    t           j                            ddgdgddgddgd          } t          j        g dg d	g d
g dg dggg                              t          j                  }t          j        g dg dg dggg                              t          j                  }t          | |g|gd           dS )zwinput_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*   r0   )r   g      @r    )r7   r'   r9   )r.   g     4@r2   *test_averagepool_2d_precomputed_same_upperr;   Nr=   rE   s      rG   ,export_averagepool_2d_precomputed_same_upperz8AveragePool.export_averagepool_2d_precomputed_same_upper   s    {$$5EQF! % 
 
 H ((((,,,,,,,,,

 
 &

 	
 H%5%5%5~~~FGHIIPPJ
 
 	3C=		
 	
 	
 	
 	
 	
rI   c                    t           j                            ddgdgdg          } t          j                            ddd                              t          j                  }t          j        |          }d	}dg}dg}t          ||dd	         ||          \  }}|}t          |||||d
          }	t          | |g|	gd           d	S )zAinput_shape: [1, 3, 32]
        output_shape: [1, 3, 31]
        r   r   r   r   r   r   r   r   r       NAVGtest_averagepool_1d_defaultr;   r>   r?   r@   rA   randomrandnrC   rD   shaper   r	   r   
rF   r   x_shaper   r   rS   	out_shape_paddedr   s
             rG   export_averagepool_1d_defaultz)AveragePool.export_averagepool_1d_default   s    
 {$$5E	 % 
 
 IOOAq"%%,,RZ88(1++s#8'!""+|W
 
	1 ,EJJtQC!3PQQQQQQrI   c                    t           j                            ddgdgddg          } t          j                            dddd                              t          j                  }t          j        |          }d	}d
}d}t          ||dd	         ||          \  }}|}t          |||||d          }	t          | |g|	gd           d	S )zIinput_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_defaultr;   r`   rd   s
             rG   export_averagepool_2d_defaultz)AveragePool.export_averagepool_2d_default   s    
 {$$5EQ	 % 
 
 IOOAq"b))00<<(1++8'!""+|W
 
	1 ,EJJtQC!3PQQQQQQrI   c                    t           j                            ddgdgg d          } t          j                            ddddd                              t          j                  }t          j        |          }d	}g d}g d
}t          ||dd	         ||          \  }}|}t          |||||d          }	t          | |g|	gd           d	S )zQinput_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_defaultr;   r`   rd   s
             rG   export_averagepool_3d_defaultz)AveragePool.export_averagepool_3d_default   s    
 {$$5E"	 % 
 
 IOOAq"b"--44RZ@@(1++ yy))8'!""+|W
 
	1 ,EJJtQC!3PQQQQQQrI   c            
     ~   t           j                            ddgdgddgd          } t          j                            ddd	d	                              t          j                  }t          j        |          }d
}d}t          d|dd         ||          }t          d|dd         |||          }|d         dz  }|d         |z
  }|d         dz  }	|d         |	z
  }
t          j        |dd||f|	|
ffdt          j                  }||	||
f}t          |||||d||          }t          | |g|gd           dS )z{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   rW   r   r   r   rX   r   r   r]   rk   rl   Nr   r   r   constantmodeconstant_valuesr^   pads_requiredr   test_averagepool_2d_same_upperr;   r>   r?   r@   rA   ra   rb   rC   rD   rc   r   r   padnanr	   r   )rF   r   re   r   rS   rf   	pad_shapepad_top
pad_bottompad_left	pad_rightrh   r   r   s                 rG    export_averagepool_2d_same_upperz,AveragePool.export_averagepool_2d_same_upper   s    {$$5EQ! % 
 
 IOOAq"b))00<<(1++-'!""+|W
 
	 "'!""+|Wi
 
	 A,!#q\G+
Q<1$aL8+	Vgz2Xy4IJF	
 
 
 :y9	
 	
 	
 	tQC!3STTTTTTrI   c            
     ~   t           j                            ddgdgddgd          } t          j                            ddd	d	                              t          j                  }t          j        |          }d
}d}t          d|dd         ||          }t          d|dd         |||          }|d         dz  }|d         |z
  }|d         dz  }	|d         |	z
  }
t          j        |dd||f|
|	ffdt          j                  }||
||	f}t          |||||d||          }t          | |g|gd           dS )z{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_LOWERru   r   r   r]   rk   rl   Nr   rv   rw   rx   r^   r{   test_averagepool_2d_same_lowerr;   r~   )rF   r   re   r   rS   rf   r   r   r   r   r   rh   r   r   s                 rG    export_averagepool_2d_same_lowerz,AveragePool.export_averagepool_2d_same_lower/  s    {$$5EQ! % 
 
 IOOAq"b))00<<(1++-'!""+|W
 
	 "'!""+|Wi
 
	 q\Q&
A,+aLA%	Q<)+Vgz2Xy4IJF	
 
 
 :y9	
 	
 	
 	tQC!3STTTTTTrI   c            
     >   t           j                            ddgdgddgg d          } t          j                            dddd                              t          j                  }t          j        |          }d	}d
}d}d}d}d}||||g}	t          |	|dd         ||d          \  }
}t          j
        |dd|d         |d         f|d         |d         ffdt          j                  }t          |||||
d||	          }t          | |g|gd           dS ){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   rl   r   NF	ceil_moderv   r   rw   rx   r^   r{   test_averagepool_2d_padsr;   )r>   r?   r@   rA   ra   rb   rC   rD   rc   r   r   r   r	   r   )rF   r   re   r   rS   r   r   r   r   r   rf   
extra_padsrh   r   s                 rG   export_averagepool_2d_padsz&AveragePool.export_averagepool_2d_pads^  sm    {$$5EQ % 
 
 IOOAq"b))00<<(1++
	:y9 A'!""+|W!
 !
 !
	: A
1.A
1.	 F

 

 

 $	
 	
 	
 	tQC!3MNNNNNNrI   c                 4   t           j                            ddgdgddgg dd          } t          j                            dddd                              t          j                  }t          j        |          }d	}d
}d	}d}d}d}d}	||	||g}
t          |
|dd         |||d          \  }}t          j
        |dd|d         |d         f|d         |d         ffdd          }t          |||||d||
d	  	        }t          | |g|gd           dS )r   r   r   r   r   r   r   rK   r   rl   r   r   NFr   rv   r   rw   rx   r^   )r|   r   rL   *test_averagepool_2d_pads_count_include_padr;   )r>   r?   r@   rA   ra   rb   rC   rD   rc   r   r   r	   r   )rF   r   re   	dilationsr   rS   r   r   r   r   r   rf   r   rh   r   s                  rG   ,export_averagepool_2d_pads_count_include_padz8AveragePool.export_averagepool_2d_pads_count_include_pad  s    {$$5EQ % 
 
 IOOAq"b))00<<(1++	
	:y9 A'!""+|Wi5!
 !
 !
	: A
1.A
1.	 

 

 

 $

 

 

 	3C=		
 	
 	
 	
 	
 	
rI   c            
        t           j                            ddgdgddgddg          } t          j                            dddd                              t          j                  }t          j        |          }d	}d
}t          d|dd         ||d          \  }}|}t          |||||d|d          }t          | |g|gd           dS )zIinput_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_stridesr;   r`   )	rF   r   re   r   rS   rf   r   rh   r   s	            rG   export_averagepool_2d_stridesz)AveragePool.export_averagepool_2d_strides  s    
 {$$5EQF % 
 
 IOOAq"b))00<<(1++;'!""+|W
 
 
	4 	
 	
 	
 	tQC!3PQQQQQQrI   c                 v   t           j                            ddgdgddgddgd          } t          j        g dg d	g d
g dggg                              t          j                  }t          j        ddgddgggg                              t          j                  }t          | |g|gd           dS )Einput_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   r6   r&   r8   test_averagepool_2d_ceilr;   Nr=   rE   s      rG   export_averagepool_2d_ceilz&AveragePool.export_averagepool_2d_ceil  s    
 {$$5EQF % 
 
 H %$'(((		
 
 &

 	
 HC2t*-./0077
CCtQC!3MNNNNNNrI   c            
        t           j                            ddgdgddgddgg ddd          } t          j        d	d
gddggddgddggddgddgggg                              t          j                  }t          j        dggdggdgggg                              t          j                  }t          | |g|gd           dS )zEinput_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   rL   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_padr;   Nr=   rE   s      rG   4export_averagepool_2d_ceil_last_window_starts_on_padz@AveragePool.export_averagepool_2d_ceil_last_window_starts_on_pad  s   
 {$$5EQF % 	
 	
 H f%'78f%'78f%'78
 
 &

 	
 HzVH:z:;<<CCBJOO3CE		
 	
 	
 	
 	
 	
rI   c            	     |   t           j                            ddgdgddgddgddgd          } t          j        g dg d	g d
g dggg                              t          j                  }t          j        ddgddgggg                              t          j                  }t          | |g|gd           dS )r   r   r   r   r   r   Tr   r   r   rS   r   r   r   r   r   r   r   r    r#   r%   test_averagepool_2d_dilationsr;   Nr=   rE   s      rG   export_averagepool_2d_dilationsz+AveragePool.export_averagepool_2d_dilations'  s    
 {$$5EQF!f % 
 
 H %$'(((		
 
 &

 	
 HAR)*+,,33BJ??tQC!3RSSSSSSrI   c            
        t           j                            ddgdgg dg dg dd          } t          j        g dg d	g d
g dgg dg d	g d
g dgg dg d	g d
g dgg dg d	g d
g dgggg                              t          j                  }t          j        ddgddggddgddggggg                              t          j                  }t          | |g|gd           dS )r   r   r   r   rp   rq   Tr   r   r   r   r   r   r    r#   r%   #test_averagepool_3d_dilations_smallr;   Nr=   rE   s      rG   export_averagepool_3d_dilationsz+AveragePool.export_averagepool_3d_dilationsH  s   
 {$$5E"IIii % 
 
 H
 )LL(LL+OO,,,	 )LL(LL+OO,,,	 )LL(LL+OO,,,	 )LL(LL+OO,,,	'
 
> &

? 	
B H!Q"b*aVb"X,>?@ABBII"*UU!qc0U	
 	
 	
 	
 	
 	
rI   c                 J   d} d}d}d}d}dD ]}dD ]}t           j                            dd	gd
g|||||          }t          j        j        ddg| R                      t          j                  }t          d | ||||          \  }}	t          j	        |dd|	d         |	d         f|	d         |	d         f|	d         |	d         ffd|dk    rdnt          j
                  }
t          |
ddg| R |||d|	d ||
  
        }d| d| }t          ||g|g|           d S )N)r]   r]   r]   rp   )r   r   r   )r   r   r   r   )r   r   )TFr   r   r   )r   r   r   rS   r   rL   r   r   )r   r   rv   r   r   r   r   rw   rx   r^   )r|   r   r   rL   9test_averagepool_3d_dilations_large_count_include_pad_is__ceil_mode_is_r;   )r>   r?   r@   rA   ra   rb   rC   rD   r   r   r   r	   r   )re   r   r   rS   rL   r   rF   r   rf   r   rh   r   	test_names                rG   %export_averagepool_3d_dilations_largez1AveragePool.export_averagepool_3d_dilations_large  s   	 !' 0	F 0	F* /F /F	{,,!5 E!-#'&7' - 	 	 IOAq37333::2:FF(I '') ) )%	: #A
16#A
16#A
16 $):a)?)?AARV   $G$$ ",'&7   EXi  E  E  zC  E  E	tQC!9EEEEE_/F0	F 0	FrI   N)r   r   )__name__
__module____qualname__staticmethodrH   rP   rU   rZ   ri   rn   rs   r   r   r   r   r   r   r   r   r   r    rI   rG   r   r      sh       )
 )
 )
 \)
V -
 -
 -
 \-
^ 
 
 
 \
B #
 #
 #
 \#
J R R R \R. R R R \R. R R R \R. ,U ,U ,U \,U\ ,U ,U ,U \,U\ .O .O .O \.O` 6
 6
 6
 \6
p R R R \R@ O O O \O8 
 
 
 \
@ T T T \T@ 4
 4
 4
 \4
l 7F 7F 7F \7F 7F 7FrI   r   )
__future__r   numpyrA   r>   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_pool_commonr   r   r   r	   r   r   rI   rG   <module>r      s    # " " " " "      , , , , , , . . . . . .           d
F d
F d
F d
F d
F$ d
F d
F d
F d
F d
FrI   