
    h7                     .    S SK rS SKJr   " S S\5      rg)    N)
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	            X/var/www/fran/franai/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	                    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(       aj  [        [        U5      5       HQ  n	[        [        R                  " X   X   R                  5       -   XY   S-
  XI   -  S-   -
  X   -  S-   5      5      X'   MS     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'   XU	S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pad_is                   r   r   MaxPool._max_pool6   s    <$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 "*% 
+$' 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%*ad^%;HTN 9" s#678A.1 3 6$0Oa$79<#G!#K!M"#!$ &j)	/(+ 9 "#q($$$
 
 "#q($$$
 
 "#q($$$
 
 ;AGG9AFGG[ =;= Q  @s   MM#+M(!M-M2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r8   
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   r9   r!   )cx_dy_di_dphhstarthendYhh_indexhI_dataX_dataY_data
dilation_hheightr   r0   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#   zerosr8   fullint64ravelr!   r"   outputreshape)r   r   r	   r
   r   r   r0   r   r   r3   global_poolingy_dimsyindicesx_dimschannelstotal_channelsrR   r?   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   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   r7   r9   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   r9   )r!   r%   ) r?   r@   rA   rC   rD   rE   pwwstartwend
pool_indexrF   rG   w_indexrH   winput_indexrI   rJ   rK   rL   
dilation_wrM   r   r0   rN   pooled_widthr   rO   stride_wwidthrP   rQ   s                    r   rR   '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%   rT   r#   rU   r8   rV   rW   r"   rX   r!   rY   rZ   ) r   r   r	   r
   r   r   r0   r   r   r3   r[   r\   r]   r^   r_   r`   ra   rR   r?   rI   rJ   rK   rL   rm   rM   rN   rn   rO   ro   rp   rP   rQ   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   r7   r9   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   re   r   )r   r   r   r9   r>   )*r?   r@   rA   rB   rC   rD   rE   rf   rg   rh   pddstartdendri   rF   rG   rj   d_indexrH   rk   drl   rI   rJ   rK   depth
dilation_drL   rm   rM   r   r0   pooled_depthrN   rn   r   stride_drO   ro   rp   rP   rQ   s*                         r   rR   'MaxPool._max_pool_3d.<locals>.iteration]  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   rr   )$r   r   r	   r
   r   r   r0   r   r   r3   r[   r\   r]   r^   r_   r`   ra   rR   r?   rI   rJ   rK   r|   r}   rL   rm   rM   r~   rN   rn   r   rO   ro   rp   rP   rQ   s$        ```           @@@@@@@@@@@@@@@@@r   r,   MaxPool._max_pool_3d6  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yHv6@pK@Zb@r   r   )numpyr#   "onnx.reference.ops._op_common_poolr   r   r   r   r   <module>r      s     9M@j M@r   