
    Si8                    :    S SK Jr  S SKrS SKJr   " S S\5      rg)    )annotationsN)
CommonPoolc                  D    \ rS rSr       S	S jrS rS rS rS rSr	g)
MaxPool   Nc	                   Ub'  [        U5      [        U5      :w  d9  [        U5      S:w  d*  Ub=  [        U5      [        U5      :w  d  [        U5      S:w  a  U R                  UUUUUUUUS9$ [        R                  " U SSUUUUUUUUS9$ )N   )auto_pad	ceil_mode	dilationskernel_shapepadsstorage_orderstridesMAXr   )minmax	_max_poolr   _run)	selfxr
   r   r   r   r   r   r   s	            ]/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/onnx/reference/ops/op_max_pool.pyr   MaxPool._run   s     !Y3y>1S^q5HS\S\%AS\UVEV>>!##)+ " 	 	 %'
 	
    c	                J   Uc'  [        [        U5      S-  5       V	s/ s H  n	SPM     nn	Uc$  [        [        U5      5       V	s/ s H  n	SPM     nn	Uc$  [        [        U5      5       V	s/ s H  n	SPM     nn	[        U5      n
[        R                  " [        U
5       V	s/ s H  oU	   XiU
-      4PM     sn	5      nUR                  SS  nU Vs/ s H  nSPM     nnU(       a  [        [        U5      5       H  n	[        [        R                  " X   X   R                  5       -   XY   S-
  XI   -  S-   -
  X   -  S-   5      5      X'   X   S-
  X   -  X   X   S   -   :  nU(       d  Ms  X==   S-  ss'   M     Oi[        [        U5      5       HQ  n	[        [        R                  " X   X   R                  5       -   XY   S-
  XI   -  S-   -
  X   -  S-   5      5      X'   MS     U(       Ga  US:w  Ga  US;   a  [        [        U5      5       H  n	US:X  a)  [        [        R                  " X   X   -  5      5      X'   O([        [        R                  " X   X   -  5      5      X'   X   S-
  X   -  XY   S-
  XI   -  S-   -   X   -
  nUS-  XS4'   UXS4   -
  XS4'   M     OV[        [        U5      5       H>  n	[        [        R                  " X   XY   S-
  XI   -  S-   -
  S-   X   -  5      5      X'   M@     [        U5      S:X  a  U R                  UUUUUUUUU5	      $ [        U5      S:X  a  U R                  UUUUUUUUU5	      $ [        U5      S:X  a  U R                  UUUUUUUUU5	      $ [        SUR                   S	35      es  sn	f s  sn	f s  sn	f s  sn	f s  snf )
N   r   r	   NOTSET)
SAME_UPPER
SAME_LOWERr      zNot implemented yet for shape .)rangelennparrayshapeintceilsumfloor_max_pool_1d_max_pool_2d_max_pool_3dRuntimeError)r   r   r
   r   r   r   r   r   r   in_dimsnew_padsinput_spatial_shapesoutput_spatial_shape$need_to_reduce_out_size_in_ceil_modepad_is                    r   r   MaxPool._max_pool6   sN    <$S%6%:;<;!A;D<?"'L(9":;":Qq":G;$)#l*;$<=$<q$<I=\"88%-P-Q1gtJ'78-PQggabk+>?+>a+>?3234*-GG/2&koo/0 ,! 3y|CaGI "*% 
+$' )+a/J8"5"88;q>"I8J4 87(+q0+! 5$ 3234*-HH/2&koo/0 ,! 3y|CaGI "*% 
+$' 5 H,77s#678A</25GG$7$:WZ$GH3,/ 36HH%8%;gj%HI3,/ .014
B(Oa/9<?!CE-01 
 &+aZHTN%*Xd^%;HTN 9" s#678A.1 3 6$0Oa$79<#G!#K!M"#!$ &j)	/(+ 9 "#q($$$
 
 "#q($$$
 
 "#q($$$
 
 ;AGG9AFGGe =;= Q  @s   NN+N!NN c
                  ^^^^^^^^^^^ Sn
UR                   S S [        U	5      -   n[        R                  " XR                  S9n[        R
                  " U[        R                  SS9nUR                   nUS   nUS   mUS   mUS   U-  nU
(       a  SOUS   mTmTmUS   mUR                  5       mUR                  5       mUR                  5       mUUUUUUUUUUU4S jn[        U5       H  nU" U5        M     [        U R                  5      S:X  a  TR                  U5      4$ TR                  U5      TR                  U5      4$ )	NFr   dtyper:   
fill_valuer	   r   c                  > U T-  nU T-  nU T-  n[        T5       Hk  nUT-  TS   -
  nUTS   T-  -   nS nSn[        XVT5       H*  n	U	S:  d  U	T:  a  M  Ub  TX-      U:  d  M!  TX-      nU	nM,     UTX$-   '   U T-  U-   T
X4-   '   Mm     g )Nr   r   r   r;   r"   )cx_dy_di_dphhstarthendYhh_indexhI_dataX_dataY_data
dilation_hheightr   r1   pooled_heightstride_hx_stepy_steps             r   	iteration'MaxPool._max_pool_1d.<locals>.iteration   s    f*Cf*Cf*CM*h$7Q* <<vZ8A1uV zVCG_r%9#CG_"# 9 $&sx #$v:#7sx  +r   )r&   tupler$   zerosr:   fullint64ravelr"   r#   outputreshape)r   r   r
   r   r   r   r1   r   r   r4   global_poolingy_dimsyindicesx_dimschannelstotal_channelsrT   rA   rK   rL   rM   rN   rO   rP   rQ   rR   rS   s        ``            @@@@@@@@@r   r+   MaxPool._max_pool_1d   s$    !u%9::HHV77+''&R@!9q	X-&1GAJq\
	8 	8$ ~&AaL ' t{{q NN6*,,v&v(>??r   c
                6  ^^^^^^^^^^^^^^^^ Sn
UR                   S S [        U	5      -   n[        R                  " XR                  S9n[        R
                  " U[        R                  SS9nUR                   nUS   nUS   m[        T5      S:  a  US   OSmUS   m[        T5      S:  a  US   OSmUS   U-  nU
(       a  SOUS   mU
(       a  SOUS   mTT-  mTT-  mUS   mUS   mUR                  5       mUR                  5       mUR                  5       mUUUUUUUUUUUUUUUU4S	 jn[        U5       H  nU" U5        M     [        U R                  5      S:X  a  TR                  U5      4$ TR                  U5      TR                  U5      4$ )
NFr   r9   r;   r<   r	   r    r   c                @  > U T-  nU T-  n[        T5       GH  nUT-  TS   -
  nUTS   T-  -   n[        T5       H  nUT-  TS   -
  nUTS   T-  -   nUT-  U-   n	S n
SnSn[        XET5       Hp  nUS:  d  UT:  a  M  [        XxT5       HO  nUS:  d  UT:  a  M  UT-  U-   nUS:  d  UTR                  S   :  a  M4  U
b  TX-      U
:  d  MD  TX-      n
UnUnMQ     Mr     U
c  M  U
TX)-   '   TS:X  a  U T-  UT-  -   U-   OU T-  U-   UT-  -   TX)-   '   M     GM     g )Nr?   r   r	   r   r	   r;   )r"   r&   ) rA   rB   rC   rE   rF   rG   pwwstartwend
pool_indexrH   rI   w_indexrJ   winput_indexrK   rL   rM   rN   
dilation_wrO   r   r1   rP   pooled_widthr   rQ   stride_wwidthrR   rS   s                    r   rT   'MaxPool._max_pool_2d.<locals>.iteration  s   f*Cf*CM*h$7Q* <<-B(]Xd^;F!LOj$@@D!#l!2R!7JB G G"6<q5AK$!&vZ!@A 1uU
 (*+e)a-K*Q+Q2O (!zVC4E-F-K%+C,=%>*+*+ "A = z /1F3+, )A- F
Wu_4w>Z'1Gf4DD 3+,/ . +r   r&   rV   r$   rW   r:   rX   rY   r#   rZ   r"   r[   r\   ) r   r   r
   r   r   r   r1   r   r   r4   r]   r^   r_   r`   ra   rb   rc   rT   rA   rK   rL   rM   rN   ro   rO   rP   rp   rQ   rq   rr   rR   rS   s         ```           @@@@@@@@@@@@@r   r,   MaxPool._max_pool_2d   sw    !u%9::HHV77+''&R@!9 .2q	q	$'$5$9vayqX-&1GAJ&1GAJ%-q\
q\
!	 !	 !	F ~&AaL ' t{{q NN6*,,v&v(>??r   c
                  ^^^^^^^^^^^^^^^^^ ^!^"^# Sn
UR                   S S [        U	5      -   n[        R                  " XR                  S9n[        R
                  " U[        R                  SS9nUR                   nUS   nUS   m[        T5      S:  a  US   OSm![        T5      S:  a  US   OSmUS   m[        T5      S:  a  US   OSm[        T5      S:  a  US   OSmUS	   U-  nU
(       a  SOUS	   mU
(       a  SOUS   m U
(       a  SOUS   mTT!-  T-  m"TT-  T-  m#US	   mUS   mUS   mUR                  5       mUR                  5       mUR                  5       mUUUUUUUUUUUUUUUUU U!U"U#4S
 jn[        U5       H  nU" U5        M     [        U R                  5      S:X  a  TR                  U5      4$ TR                  U5      TR                  U5      4$ )NFr   r9   r;   r<   r	   r       r   c           
       > U T(-  nU T)-  nU T)-  n[        T!5       GHZ  nUT%-  TS   -
  nUTS   T-  -   n[        T"5       GH0  nUT&-  TS   -
  nUTS   T-  -   n	[        T 5       GH  n
U
T$-  TS   -
  nUTS   T-  -   nUT"-  T -  UT -  -   U
-   nS nSnSnSn[        XVT5       H  nUS:  d  UT:  a  M  [        XT5       Hb  nUS:  d  UT':  a  M  [        XT5       HA  nUS:  d  UT:  a  M  UT'-  T-  UT-  -   U-   nUb  TUU-      U:  d  M3  TUU-      nUnUnUnMC     Md     M     UTX--   '   T#S:X  a  U T(-  UT'-  T-  -   UT-  -   U-   OU T(-  U-   UT-  -   UT-  T'-  -   TX=-   '   GM	     GM3     GM]     g )Nr?   r   rg   r	   )r   r   r   r;   r@   )*rA   rB   rC   rD   rE   rF   rG   rh   ri   rj   pddstartdendrk   rH   rI   rl   d_indexrJ   rm   drn   rK   rL   rM   depth
dilation_drN   ro   rO   r   r1   pooled_depthrP   rp   r   stride_drQ   rq   rr   rR   rS   s*                         r   rT   'MaxPool._max_pool_3d.<locals>.iterationb  s2   f*Cf*Cf*CM*h$7Q* <<-B(]Xd^;F!LOj$@@D#L1!#h$!?%Q*(DD-<rL?PPSUU # ""$"$"$!&vZ!@A 1uV (%*6%D#$q5AJ$,).vZ)HA'(1uU
(023e)e2Ca%i2ORS2SK')zVC+<M5NQS5S-3C+4E-F232323 *I &E "A  46s/0  -1 !"F
")E/E"9!:")E/!2 #*!* !"F
")!*")F"2!3 #*F"2U":!; s/07 2 . +r   rt   )$r   r   r
   r   r   r   r1   r   r   r4   r]   r^   r_   r`   ra   rb   rc   rT   rA   rK   rL   rM   r~   r   rN   ro   rO   r   rP   rp   r   rQ   rq   rr   rR   rS   s$        ```           @@@@@@@@@@@@@@@@@r   r-   MaxPool._max_pool_3d;  s    !u%9::HHV77+''&R@!9 .2q	 .2q	q	$'$5$9vayq$'$5$9vayqX-&1GAJ&1GAJ&1GAJ%%'-<q\
q\
q\
4	 4	 4	 4	l ~&AaL ' t{{q NN6*,,v&v(>??r    )NNNNNNN)
__name__
__module____qualname____firstlineno__r   r   r+   r,   r-   __static_attributes__r   r   r   r   r      s=     (
T~H@6@pK@Zb@r   r   )
__future__r   numpyr$   "onnx.reference.ops._op_common_poolr   r   r   r   r   <module>r      s     #  9R@j R@r   