§
    1�Åj4Y  ã                  ó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edd„¦   «         Zedd„¦   «         ZdS )ÚMaxPoolÚ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(   r)   r)   r)   ©r-   r.   r/   r/   r/   ©r3   r4   r5   r5   r5   Útest_maxpool_2d_uint8©r   r   ÚnameN)ÚonnxÚhelperÚ	make_nodeÚnpÚarrayÚastypeÚuint8r   ©Únoder   r   s      úTC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/maxpool.pyÚexport_maxpool_2d_uint8zMaxPool.export_maxpool_2d_uint8   s'  € õ Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø��ð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒHð -Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ 	ˆt˜Q˜C¨!¨Ð3JÐKÑKÔKÐKÐKÐKó    c                 óŒ  — 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 )r   r   r   r   r   r   r   r   r   r$   r*   r0   r6   r7   r8   Ú test_maxpool_2d_precomputed_padsr:   N©r<   r=   r>   r?   r@   rA   Úfloat32r   rC   s      rE   Ú"export_maxpool_2d_precomputed_padsz*MaxPool.export_maxpool_2d_precomputed_pads>   s'  € õ Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø��ð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒHð -Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ 	ˆt˜Q˜C¨!¨Ð3UÐVÑVÔVÐVÐVÐVrG   c                 ó  — t           j                             ddgd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          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   Úzr   r   r   r   r   r$   r*   r0   r6   r7   r8   )r&   r'   r(   r(   r(   )r,   r-   r.   r.   r.   )r2   r3   r4   r4   r4   Ú,test_maxpool_with_argmax_2d_precomputed_padsr:   N©	r<   r=   r>   r?   r@   rA   rK   Úint64r   ©rD   r   r   rN   s       rE   Ú.export_maxpool_with_argmax_2d_precomputed_padsz6MaxPool.export_maxpool_with_argmax_2d_precomputed_padsh   sŸ  € õ Œ{×$Ò$ØØ�5Ø˜#�JØ˜Q˜Ø��ð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒHð -Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒHð -Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ 	ØØ�3Ø˜�FØ?ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   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 )úEinput_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_maxpool_2d_precomputed_stridesr:   NrJ   rC   s      rE   Ú%export_maxpool_2d_precomputed_stridesz-MaxPool.export_maxpool_2d_precomputed_strides¤   s   € õ
 Œ{×$Ò$Ø˜s˜e¨c¨UÀ!ÀQÀÐRSÐUVÐQWð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒH˜˜A˜  R Ð)Ð*Ð+Ñ,Ô,×3Ò3µB´JÑ?Ô?ˆåØ˜!˜ q cÐ0Uð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   c                 óò  — t           j                             ddgd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        ddgddgggg¦  «                             t          j        ¦  «        }t          j        ddgddgggg¦  «                             t          j        ¦  «        }t          | |g||gd¬¦  «         dS )rU   r   r   r   rN   r   r   )r   r   r   rW   Ústorage_orderr   r   r$   r*   r0   r    r"   r,   r.   r   r+   r!   r-   Ú/test_maxpool_with_argmax_2d_precomputed_stridesr:   NrP   rR   s       rE   Ú1export_maxpool_with_argmax_2d_precomputed_stridesz9MaxPool.export_maxpool_with_argmax_2d_precomputed_strides¿   s<  € õ
 Œ{×$Ò$ØØ�5Ø˜#�JØ˜Q˜Ø˜�FØð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒH˜˜A˜  R Ð)Ð*Ð+Ñ,Ô,×3Ò3µB´JÑ?Ô?ˆÝŒH˜˜B˜ ! R Ð)Ð*Ð+Ñ,Ô,×3Ò3µB´HÑ=Ô=ˆåØØ�3Ø˜�FØBð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   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   rW   Úauto_padr   r   r$   r*   r0   )r    r"   r#   )r,   r.   r/   )r2   r4   r5   Ú&test_maxpool_2d_precomputed_same_upperr:   NrJ   rC   s      rE   Ú(export_maxpool_2d_precomputed_same_upperz0MaxPool.export_maxpool_2d_precomputed_same_upperã   s
  € õ Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø˜�FØ!ð %ñ 
ô 
ˆõ ŒHð (˜˜Ø(Ð(Ð(Ø,Ð,Ð,Ø,Ð,Ð,Ø,Ð,Ð,ððð
ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒH˜
˜
˜
 L L L°,°,°,Ð?Ð@ÐAÑBÔB×IÒIÍ"Ì*ÑUÔUˆåØ˜!˜ q cÐ0Xð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   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ÚMAXÚtest_maxpool_1d_defaultr:   ©r<   r=   r>   r?   ÚrandomÚrandnrA   rK   Úshaper   r	   r   ©
rD   r   Úx_shaper   r   rW   Ú	out_shapeÚ_Úpaddedr   s
             rE   Úexport_maxpool_1d_defaultz!MaxPool.export_maxpool_1d_default  sß   € õ
 Œ{×$Ò$ØØ�5Ø�EØ˜ð	 %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q "Ñ%Ô%×,Ò,­R¬ZÑ8Ô8ˆÝ”(˜1‘+”+ˆØˆØ�sˆØ�#ˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀEÑJÔJˆåˆt˜Q˜C¨!¨Ð3LÐMÑMÔMÐMÐMÐMrG   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   rd   r   r   re   N©r   r   ©r   r   rf   Útest_maxpool_2d_defaultr:   rh   rl   s
             rE   Úexport_maxpool_2d_defaultz!MaxPool.export_maxpool_2d_default  sß   € õ
 Œ{×$Ò$ØØ�5Ø�EØ˜Q˜ð	 %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆØˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀEÑJÔJˆåˆt˜Q˜C¨!¨Ð3LÐMÑMÔMÐMÐMÐMrG   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   rd   r   r   re   N©r   r   r   r   rf   Útest_maxpool_3d_defaultr:   rh   rl   s
             rE   Úexport_maxpool_3d_defaultz!MaxPool.export_maxpool_3d_default4  sé   € õ
 Œ{×$Ò$ØØ�5Ø�EØ"˜˜ð	 %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " b¨"Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆÝ”(˜1‘+”+ˆØˆØ �y�yˆØ�)�)ˆÝ8Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�1ð ˆÝ�˜ ,°¸ÀEÑJÔJˆåˆt˜Q˜C¨!¨Ð3LÐMÑMÔMÐMÐMÐMrG   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        ¬¦  «        }||	||
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   r_   ©r   r   r   r`   r   r   re   rs   rt   Nr   ©r   r   Úconstant©ÚmodeÚconstant_valuesrf   Útest_maxpool_2d_same_upperr:   ©r<   r=   r>   r?   ri   rj   rA   rK   rk   r   r   ÚpadÚnanr	   r   )rD   r   rm   r   rW   rn   Ú	pad_shapeÚpad_topÚ
pad_bottomÚpad_leftÚ	pad_rightrp   r   r   s                 rE   Úexport_maxpool_2d_same_upperz$MaxPool.export_maxpool_2d_same_upperL  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ØÝœFð	
ñ 
ô 
ˆð ˜ :¨yÐ9ˆÝ�˜ ,°¸ÀEÈ4ÐQUÑVÔVˆåˆt˜Q˜C¨!¨Ð3OÐPÑPÔPÐPÐPÐPrG   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        ¬¦  «        }||
||	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
        r   r   r   r   Ú
SAME_LOWERr}   r   r   re   rs   rt   Nr   r~   r   r€   rf   Útest_maxpool_2d_same_lowerr:   r„   )rD   r   rm   r   rW   rn   r‡   r‰   rˆ   r‹   rŠ   rp   r   r   s                 rE   Úexport_maxpool_2d_same_lowerz$MaxPool.export_maxpool_2d_same_lowerr  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ØÝœFð	
ñ 
ô 
ˆð ˜ :¨yÐ9ˆÝ�˜ ,°¸ÀEÈ4ÐQUÑVÔVˆåˆt˜Q˜C¨!¨Ð3OÐPÑPÔPÐPÐPÐPrG   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x}x}x}}||||g}	t          |	|dd…         ||¦  «        \  }
}t          j
        |dd||f||ffdt          j        ¬¦  «        }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   rt   r   Nr~   r   r€   rf   )Úpads_requiredr   Útest_maxpool_2d_padsr:   )r<   r=   r>   r?   ri   rj   rA   rK   rk   r   r…   r†   r	   r   )rD   r   rm   r   rW   r‰   rˆ   r‹   rŠ   r   rn   Ú
extra_padsrp   r   s                 rE   Úexport_maxpool_2d_padszMaxPool.export_maxpool_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ñ!
ô !
Ñˆ	�:õ ”ØØ�V˜g zÐ2°X¸yÐ4IÐJØÝœFð	
ñ 
ô 
ˆõ ØØØØØØØ$Øð	
ñ 	
ô 	
ˆõ 	ˆt˜Q˜C¨!¨Ð3IÐJÑJÔJÐJÐJÐJrG   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
}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   rV   r   re   N)r   r   r“   r   rf   Útest_maxpool_2d_stridesr:   rh   )	rD   r   rm   r   r   rW   rn   rp   r   s	            rE   Úexport_maxpool_2d_stridesz!MaxPool.export_maxpool_2d_stridesÂ  så   € õ
 Œ{×$Ò$Ø˜s˜e¨c¨UÀ!ÀQÀÐRSÐUVÐQWð %ñ 
ô 
ˆõ ŒI�OŠO˜A˜q " bÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”(˜1‘+”+ˆØˆØˆØˆÝ;Ø�'˜!˜"˜"”+˜|¨Wñ
ô 
‰ˆ	�4ð ˆÝ�˜ ,°¸ÀEÑJÔJˆåˆt˜Q˜C¨!¨Ð3LÐMÑMÔMÐMÐMÐMrG   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   rW   Ú	ceil_mode©r   r   r   r   ©r   r   r    r!   ©r"   r#   r%   r&   ©r'   r(   r)   r+   r%   r&   r)   r+   Útest_maxpool_2d_ceilr:   NrJ   rC   s      rE   Úexport_maxpool_2d_ceilzMaxPool.export_maxpool_2d_ceil×  sê   € õ
 Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø˜�FØð %ñ 
ô 
ˆõ ŒHð %˜˜Ø$˜˜Ø'˜˜Ø(Ð(Ð(ð	ðð	ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒH˜˜R˜ 2 r (Ð+Ð,Ð-Ñ.Ô.×5Ò5µb´jÑAÔAˆåˆt˜Q˜C¨!¨Ð3IÐJÑJÔJÐJÐJÐJrG   c                 ób  — t           j                             ddgdgddgddgd¬¦  «        } t          j        ddgdd	gggg¦  «                             t          j        ¦  «        }t          j        dgggg¦  «                             t          j        ¦  «        }t          | |g|gd
¬¦  «         dS )zEinput_shape: [1, 1, 2, 2]
        output_shape: [1, 1, 1, 1]
        r   r   r   r   r   Tr�   r   r   Ú.test_maxpool_2d_ceil_output_size_reduce_by_oner:   NrJ   rC   s      rE   Ú0export_maxpool_2d_ceil_output_size_reduce_by_onez8MaxPool.export_maxpool_2d_ceil_output_size_reduce_by_oneô  sÊ   € õ
 Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø˜�FØð %ñ 
ô 
ˆõ ŒH˜˜A˜  A Ð'Ð(Ð)Ñ*Ô*×1Ò1µ"´*Ñ=Ô=ˆÝŒH˜˜�u�g�YÑÔ×&Ò&¥r¤zÑ2Ô2ˆåØØ�3Ø�CØAð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   c            	     óz  — 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 )rœ   r   r   r   r   r   ©r   r   r   rW   Ú	dilationsrŸ   r    r¡   r¢   r%   r&   r)   r+   Útest_maxpool_2d_dilationsr:   NrJ   rC   s      rE   Úexport_maxpool_2d_dilationsz#MaxPool.export_maxpool_2d_dilations  sî   € õ
 Œ{×$Ò$ØØ�5Ø�EØ˜Q˜Ø˜�FØ˜!�fð %ñ 
ô 
ˆõ ŒHð %˜˜Ø$˜˜Ø'˜˜Ø(Ð(Ð(ð	ðð	ñ
ô 
÷ Š&•”Ñ
Ô
ð 	
õ ŒH˜˜R˜ 2 r (Ð+Ð,Ð-Ñ.Ô.×5Ò5µb´jÑAÔAˆåˆt˜Q˜C¨!¨Ð3NÐOÑOÔOÐOÐOÐOrG   c            
     óÚ  — t           j                             ddgdgg d¢g d¢g 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 )úKinput_shape: [1, 1, 4, 4, 4]
        output_shape: [1, 1, 2, 2, 2]
        r   r   r   rx   ry   r©   rŸ   r    r¡   r¢   r%   r&   r)   r+   Útest_maxpool_3d_dilationsr:   NrJ   rC   s      rE   Úexport_maxpool_3d_dilationsz#MaxPool.export_maxpool_3d_dilations(  s|  € õ
 Œ{×$Ò$ØØ�5Ø�EØ"˜˜Ø�I�IØ�i�ið %ñ 
ô 
ˆõ ŒHð
 )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð'ððñ
ô 
÷> Š&•”Ñ
Ô
ð? 	
õ@ ŒH˜"˜b˜ B¨ 8Ð,°°B¨x¸"¸b¸Ð.BÐCÐDÐEÑFÔF×MÒMÝŒJñ
ô 
ˆõ 	ˆt˜Q˜C¨!¨Ð3NÐOÑOÔOÐOÐOÐOrG   c                 óü  — g d¢} g d¢}g d¢}d}t           j                             ddgdgg d¢g 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        ¦  «        }|j        dd…         }t          d|||| |¬¦  «        \  }}|}	t          |	ddg|¢R |||d|d| ¬¦	  «	        }
t          ||g|
gd¬¦  «         dS )r®   rx   ry   Fr   r   r   r©   rŸ   r    r¡   r¢   r   N©rž   r   rf   ©r”   r   rª   Ú&test_maxpool_3d_dilations_use_ref_implr:   )r<   r=   r>   r?   r@   rA   rK   rk   r   r	   r   )rª   r   rW   rž   rD   r   rm   rn   r   rp   r   s              rE   Ú(export_maxpool_3d_dilations_use_ref_implz0MaxPool.export_maxpool_3d_dilations_use_ref_impl[  sÓ  € ð
 �I�Iˆ	Ø �y�yˆØ�)�)ˆØˆ	ÝŒ{×$Ò$ØØ�5Ø�EØ"˜˜Ø�I�IØð %ñ 
ô 
ˆõ ŒHð
 )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð )˜L˜LØ(˜L˜LØ+˜O˜OØ,Ð,Ð,ð	ð'ððñ
ô 
÷> Š&•”Ñ
Ô
ð? 	
ðB ”'˜!˜"˜"”+ˆÝ;Ø�'˜<¨°)Àyð
ñ 
ô 
‰ˆ	�4ð ˆÝØØ�Ð�GÐÐØØØØØØØð

ñ 

ô 

ˆõ 	Ø˜!˜ q cÐ0Xð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   c                 óö  — 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¬¦  «        }	t          |	d
d
g| ¢R |||d|d |¬¦	  «	        }
t          ||g|
gd¬¦  «         d S )N)re   re   re   rx   )r   r   r   )r   r   r   Tr   r   r   )r   r   r   rW   rª   rž   r   r²   r~   r   r   r   r   r   r   r€   rf   r³   Ú,test_maxpool_3d_dilations_use_ref_impl_larger:   )r<   r=   r>   r?   ri   rj   rA   rK   r   r…   r	   r   )rm   rª   r   rW   rž   rD   r   rn   r   rp   r   s              rE   Ú.export_maxpool_3d_dilations_use_ref_impl_largez6MaxPool.export_maxpool_3d_dilations_use_ref_impl_large¢  sq  € àˆØˆ	Ø ˆØˆØˆ	åŒ{×$Ò$ØØ�5Ø�EØ%ØØØð %ñ 
ô 
ˆõ ŒIŒO˜A˜qÐ+ 7Ð+Ð+Ð+×2Ò2µ2´:Ñ>Ô>ˆÝ;Ø�'˜<¨°)Àyð
ñ 
ô 
‰ˆ	�4õ ”ØàØØ�a”˜$˜qœ'Ð"Ø�a”˜$˜qœ'Ð"Ø�a”˜$˜qœ'Ð"ðð Øð
ñ 
ô 
ˆõ ØØ�Ð�GÐÐØØØØØØØð

ñ 

ô 

ˆõ 	ØØ�3Ø�CØ?ð		
ñ 	
ô 	
ð 	
ð 	
ð 	
rG   N)r   r   )Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodrF   rL   rS   rY   r]   rb   rq   rv   r{   rŒ   r�   r—   rš   r¤   r§   r¬   r°   rµ   r¸   © rG   rE   r   r      s°  € € € € € Øð'Lð 'Lð 'Lñ „\ð'LðR ð'Wð 'Wð 'Wñ „\ð'WðR ð9
ð 9
ð 9
ñ „\ð9
ðv ð
ð 
ð 
ñ „\ð
ð4 ð!
ð !
ð !
ñ „\ð!
ðF ð
ð 
ð 
ñ „\ð
ð@ ðNð Nð Nñ „\ðNð. ðNð Nð Nñ „\ðNð. ðNð Nð Nñ „\ðNð. ð#Qð #Qð #Qñ „\ð#QðJ ð#Qð #Qð #Qñ „\ð#QðJ ð'Kð 'Kð 'Kñ „\ð'KðR ðNð Nð Nñ „\ðNð( ðKð Kð Kñ „\ðKð8 ð
ð 
ð 
ñ „\ð
ð, ðPð Pð Pñ „\ðPð8 ð0Pð 0Pð 0Pñ „\ð0Pðd ðD
ð D
ð D
ñ „\ðD
ðL ð2
ð 2
ð 2
ñ „\ð2
ð 2
ð 2
rG   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   r½   rG   rE   ú<module>rÃ      sÌ   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð ð ðB
ð B
ð B
ð B
ð B
ˆdñ B
ô B
ð B
ð B
ð B
rG   