
    bIg!                    f    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y)    )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y	)LpPoolc            	     ~   d} dg}dg}t         j                  j                  ddgdg|||       }t        j                  j                  ddd      j                  t        j                        }t        j                  |      }d	}t        ||dd	 ||      \  }}|}	t        |	||||d
|       }
t        ||g|
gd       y	)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/answerous/venv/lib/python3.12/site-packages/onnx/backend/test/case/node/lppool.pyexport_lppool_1d_defaultzLpPool.export_lppool_1d_default   s    
 s#{{$$5E% % 
 IIOOAq"%,,RZZ8((1+8'!"+|W
	1 ,HPQRtQC!3KL    c            	     ~   d} t         j                  j                  ddgdgddg|       }t        j                  j                  ddd	d	      j                  t        j                        }t        j                  |      }d
}d}d}t        ||dd
 ||      \  }}|}	t        |	||||d|       }
t        ||g|
gd       y
)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 % 
 IIOOAq"b)00<((1+8'!"+|W
	1 ,HPQRtQC!3KLr0   c            	        d} t         j                  j                  ddgdgg d|       }t        j                  j                  ddddd      j                  t        j                        }t        j                  |      }d	}g d}g d
}t        ||dd	 ||      \  }}|}	t        |	||||d|       }
t        ||g|
gd       y	)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_defaultI   s    
 {{$$5E" % 
 IIOOAq"b"-44RZZ@((1+ 8'!"+|W
	1 ,HPQRtQC!3KLr0   c            
     &   d} t         j                  j                  ddgdgddgd|       }t        j                  j                  ddd	d	      j                  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       y)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_upperc   sU    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|W
	 "'!"+|Wi
	 A,!#q\G+
Q<1$aL8+	Vgz2Xy4IJ	
 :y9,HdVWXtQC!3NOr0   c            
     &   d} t         j                  j                  ddgdgddgd|       }t        j                  j                  dd	d
d
      j                  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       y)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   sU    {{$$5EQ! % 
 IIOOAq"b)00<((1+-'!"+|W
	 "'!"+|Wi
	 q\Q&
A,+aLA%	Q<)+Vgz2Xy4IJ	
 :y9,HdVWXtQC!3NOr0   c            
        d} t         j                  j                  ddgdgddgg d|       }t        j                  j                  dddd      j                  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       y)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   s    {{$$5EQ % 
 IIOOAq"b)00<((1+677
7W7y8:y9;'!"+|W
	4 Vgz2Xy4IJ	
 ,HdVWXtQC!3HIr0   c            	        d} t         j                  j                  ddgdgddgddg|       }t        j                  j                  ddd	d	      j                  t        j                        }t        j                  |      }d
}d}d}t        ||dd
 ||      \  }}|}	t        |	||||d|       }
t        ||g|
gd       y
)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 % 
 IIOOAq"b)00<((1+8'!"+|W
	1 ,HPQRtQC!3KLr0   c            	     z   d} t         j                  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      j                  t        j                        }t        j                  ddgddgggg      j                  t        j                        }t        ||g|gd       y)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 % 
 HH %$'(		
 &
 	
 HH ,->?+->?	
 &
 	
 	tQC!3MNr0   N)returnNone)__name__
__module____qualname__staticmethodr/   r8   r;   rM   rQ   rV   rZ   rj    r0   r.   r   r      s    M M4 M M2 M M2 %P %PN %P %PN J JB M M4 &O &Or0   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   rq   r0   r.   <module>rw      s0    #   , . DOT DOr0   