§
    1�ÅjY$  ã                  ó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              úSC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/lppool.pyÚexport_lppool_1d_defaultzLpPool.export_lppool_1d_default   sî   € ð
 ˆØ�sˆØ�#ˆÝŒ{×$Ò$ØØ�5Ø�EØ%ØØð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q "Ñ%Ô%×,Ò,­R¬ZÑ8Ô8ˆÝ”(˜1‘+”+ˆØˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀHÐPQÐRÑRÔRˆåˆt˜Q˜C¨!¨Ð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˜Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆØˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀHÐPQÐRÑRÔRˆåˆt˜Q˜C¨!¨Ð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Ø"˜˜Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " b¨"Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆÝ”(˜1‘+”+ˆØˆØ �y�yˆØ�)�)ˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀHÐPQÐRÑRÔRˆåˆt˜Q˜C¨!¨Ð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˜Ø!Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆÝ-Ø˜' ! " "œ+ |°Wñ
ô 
ˆ	õ "Ø˜' ! " "œ+ |°W¸iñ
ô 
ˆ	ð ˜A”, !Ñ#ˆØ˜q”\ GÑ+ˆ
Ø˜Q”< 1Ñ$ˆØ˜a”L 8Ñ+ˆ	Ý”ØØ�V˜g zÐ2°X¸yÐ4IÐJØØð	
ñ 
ô 
ˆð ˜ :¨yÐ9ˆÝØ�G˜\¨7°I¸xÈÈtÐWXð
ñ 
ô 
ˆõ 	ˆt˜Q˜C¨!¨Ð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˜Ø!Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆÝ-Ø˜' ! " "œ+ |°Wñ
ô 
ˆ	õ "Ø˜' ! " "œ+ |°W¸iñ
ô 
ˆ	ð ˜q”\ QÑ&ˆ
Ø˜A”, Ñ+ˆØ˜a”L AÑ%ˆ	Ø˜Q”< )Ñ+ˆÝ”ØØ�V˜g zÐ2°X¸yÐ4IÐJØØð	
ñ 
ô 
ˆð ˜ :¨yÐ9ˆÝØ�G˜\¨7°I¸xÈÈtÐWXð
ñ 
ô 
ˆõ 	ˆt˜Q˜C¨!¨Ð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˜Ø��Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆØ67Ð7ˆ
Ð7�WÐ7˜y¨8Ø˜ :¨yÐ9ˆÝ AØ�'˜!˜"˜"”+˜|¨Wñ!
ô !
Ñˆ	�:õ ”ØàØØ˜A” 
¨1¤Ð.Ø˜A” 
¨1¤Ð.ð	ð Øð

ñ 

ô 

ˆõ ØØØØØØØ$ØØð

ñ 

ô 

ˆõ 	ˆt˜Q˜C¨!¨Ð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Øð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆØˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀHÐPQÐRÑRÔRˆåˆt˜Q˜C¨!¨Ð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\   é   é   é   )é	   é
   é   é   )é   é   é   é   géûv Õ-@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ð ,Ð->Ð?Ø+Ð->Ð?ðððñ	
ô 	
÷ Š&•”Ñ
Ô
ð 	
õ 	ˆt˜Q˜C¨!¨Ð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   