
    /j/#                    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dS )LpPoolreturnNonec            	        d} dg}dg}t           j                            ddgdg|||           }t          j                            ddd                              t          j                  }t          j        |          }d	}t          ||dd	         ||          \  }}|}	t          |	||||d
|           }
t          ||g|
gd           d	S )zAinput_shape: [1, 3, 32]
        output_shape: [1, 3, 31]
                 r   xyinputsoutputskernel_shapestridesp    NLPPOOLr   test_lppool_1d_defaultr   r   nameonnxhelper	make_nodenprandomrandnastypefloat32shaper   r	   r   )r   r   r   noder   x_shapepads	out_shape_paddedr   s              g/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/onnx/backend/test/case/node/lppool.pyexport_lppool_1d_defaultzLpPool.export_lppool_1d_default   s    
 s#{$$5E% % 
 
 IOOAq"%%,,RZ88(1++8'!""+|W
 
	1 ,HPQRRRtQC!3KLLLLLL    c            	        d} 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   r   r   r   Nr   r   r   r   r   r   test_lppool_2d_defaultr   r    r   r*   r   r+   r,   r   r   r-   r.   r/   r   s              r0   export_lppool_2d_defaultzLpPool.export_lppool_2d_default/   s    
 {$$5EQ % 
 
 IOOAq"b))00<<(1++8'!""+|W
 
	1 ,HPQRRRtQC!3KLLLLLLr2   c            	        d} 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   r5   r   r   N)r   r   r   r   r   r   test_lppool_3d_defaultr   r    r9   s              r0   export_lppool_3d_defaultzLpPool.export_lppool_3d_defaultI   s    
 {$$5E" % 
 
 IOOAq"b"--44RZ@@(1++ yy))8'!""+|W
 
	1 ,HPQRRRtQC!3KLLLLLLr2   c                 r   d} 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d          }||
|	|g}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   
SAME_UPPERr   r   r   auto_padr   r   r   r   r6   r7   Nr   r   r   constantmodeconstant_valuesr   r   test_lppool_2d_same_upperr   r!   r"   r#   r$   r%   r&   r'   r(   r)   r   r   padr	   r   )r   r*   r   r+   r   r   r-   	pad_shapepad_top
pad_bottompad_left	pad_rightr/   r,   r   s                  r0   export_lppool_2d_same_upperz"LpPool.export_lppool_2d_same_upperc   s    {$$5EQ! % 
 
 IOOAq"b))00<<(1++-'!""+|W
 
	 "'!""+|Wi
 
	 A,!#q\G+
Q<1$aL8+	Vgz2Xy4IJ	
 
 
 :y9G\7IxtWX
 
 
 	tQC!3NOOOOOOr2   c                 r   d} 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d          }|	|||
g}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
        r4   r   r   r   r   
SAME_LOWERr@   r   r   r   r6   r7   Nr   rB   rC   rD   r   r   test_lppool_2d_same_lowerr   rH   )r   r*   r   r+   r   r   r-   rJ   rL   rK   rN   rM   r/   r,   r   s                  r0   export_lppool_2d_same_lowerz"LpPool.export_lppool_2d_same_lower   s    {$$5EQ! % 
 
 IOOAq"b))00<<(1++-'!""+|W
 
	 "'!""+|Wi
 
	 q\Q&
A,+aLA%	Q<)+Vgz2Xy4IJ	
 
 
 :y9G\7IxtWX
 
 
 	tQC!3NOOOOOOr2   c                 .   d} 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x}x}x}}	||	||g}
t          |
|dd         ||          \  }}t          j
        |dd|d         |d         f|d         |d         ffdd          }t          |||||d||
| 	  	        }t          ||g|gd           dS )z{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   r   r   r,   r   r      r   r   r7   r   NrB   r   rC   rD   r   )pads_requiredr,   r   test_lppool_2d_padsr   )r!   r"   r#   r$   r%   r&   r'   r(   r)   r   rI   r	   r   )r   r*   r   r+   r   r   rL   rK   rN   rM   r,   r-   
extra_padsr/   r   s                  r0   export_lppool_2d_padszLpPool.export_lppool_2d_pads   so    {$$5EQ % 
 
 IOOAq"b))00<<(1++677
7W7y8:y9 A'!""+|W!
 !
	: A
1.A
1.	 

 

 

 $

 

 

 	tQC!3HIIIIIIr2   c            	        d} 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}d}t          ||dd
         ||          \  }}|}	t          |	||||d|           }
t          ||g|
gd           d
S )zIinput_shape: [1, 3, 32, 32]
        output_shape: [1, 3, 10, 10]
        r   r   r   r      r   r   r   r   N)r\   r\   rV   r   r   test_lppool_2d_stridesr   r    r9   s              r0   export_lppool_2d_strideszLpPool.export_lppool_2d_strides   s    
 {$$5EQF % 
 
 IOOAq"b))00<<(1++8'!""+|W
 
	1 ,HPQRRRtQC!3KLLLLLLr2   c            	        d} t           j                            ddgdgddgddgddg|           }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 )zEinput_shape: [1, 1, 4, 4]
        output_shape: [1, 1, 2, 2]
        r   r   r   r   r   )r   r   r   r   	dilationsr   )r   r   r   r4   )r\            )	   
         )            gv -@g6?0@gwIs 5@gC.c]~7@test_lppool_2d_dilationsr   N)r!   r"   r#   r$   arrayr'   r(   r   )r   r*   r   r   s       r0   export_lppool_2d_dilationsz!LpPool.export_lppool_2d_dilations  s   
 {$$5EQF!f % 
 
 H %$'(((		
 
 &

 	
 H ,->?+->?	
 	
 &

 	
 	tQC!3MNNNNNNr2   N)r   r   )__name__
__module____qualname__staticmethodr1   r:   r=   rO   rS   rZ   r^   rn    r2   r0   r   r      s7       M M M \M4 M M M \M2 M M M \M2 'P 'P 'P \'PR 'P 'P 'P \'PR .J .J .J \.J` M M M \M4 &O &O &O \&O &O &Or2   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   rs   r2   r0   <module>ry      s    # " " " " "      , , , , , , . . . . . .           WO WO WO WO WOT WO WO WO WO WOr2   