
    Ng!                     b    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 )    N)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returnNc            	         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              ^/var/www/html/ai-engine/env/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              r.   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Lr0   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   r3   r   r   N)r   r   r   r   r   r   test_lppool_3d_defaultr   r   r7   s              r.   export_lppool_3d_defaultzLpPool.export_lppool_3d_defaultH   s    
 {$$5E" % 
 
 IOOAq"b"--44RZ@@(1++ yy))8'!""+|W
 
	1 ,HPQRRRtQC!3KLLLLLLr0   c            
      p   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   r4   r5   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                  r.   export_lppool_2d_same_upperz"LpPool.export_lppool_2d_same_upperb   s    {$$5EQ! % 
 
 IOOAq"b))00<<(1++-'!""+|W
 
	 "'!""+|Wi
 
	 A,!#q\G+
Q<1$aL8+	Vgz2Xy4IJ	
 
 
 :y9,HdVWXXXtQC!3NOOOOOOr0   c            
      p   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
        r2   r
   r   r   r   
SAME_LOWERr>   r   r   r   r4   r5   Nr   r@   rA   rB   r   r   test_lppool_2d_same_lowerr   rF   )r   r(   r   r)   r   r   r+   rH   rJ   rI   rL   rK   r-   r*   r   s                  r.   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,HdVWXXXtQC!3NOOOOOOr0   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||f|	|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   r5   r   Nr@   rA   r   rB   r   r   test_lppool_2d_padsr   )r   r    r!   r"   r#   r$   r%   r&   r'   r   rG   r   r   )r   r(   r   r)   r   r   rJ   rI   rL   rK   r*   r+   r-   r   s                 r.   export_lppool_2d_padszLpPool.export_lppool_2d_pads   sE    {$$5EQ % 
 
 IOOAq"b))00<<(1++677
7W7y8:y9;'!""+|W
 
	4 Vgz2Xy4IJ	
 
 
 ,HdVWXXXtQC!3HIIIIIIr0   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)rX   rX   rT   r   r   test_lppool_2d_stridesr   r   r7   s              r.   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Lr0   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   r2   )rX            )	   
         )            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       r.   export_lppool_2d_dilationsz!LpPool.export_lppool_2d_dilations   s   
 {$$5EQF!f % 
 
 H %$'(((		
 
 &

 	
 H ,->?+->?	
 	
 &

 	
 	tQC!3MNNNNNNr0   )r   N)__name__
__module____qualname__staticmethodr/   r8   r;   rM   rQ   rV   rZ   rj    r0   r.   r
   r
      s7       M M M \M4 M M M \M2 M M M \M2 %P %P %P \%PN %P %P %P \%PN J J J \JB M M M \M4 &O &O &O \&O &O &Or0   r
   )numpyr"   r   onnx.backend.test.case.baser   onnx.backend.test.case.noder   !onnx.reference.ops.op_pool_commonr   r   r   r   r
   ro   r0   r.   <module>rt      s   
      , , , , , , . . . . . .           DO DO DO DO DOT DO DO DO DO DOr0   