
    bIgi9                    :    d dl mZ d dlZd dlmZ  G d de      Zy)    )annotationsN)
CommonPoolc                  :    e Zd Z	 	 	 	 	 	 	 ddZd Zd Zd Zd Zy)MaxPoolNc	                   |%t        |      t        |      k7  s5t        |      dk7  s'|>t        |      t        |      k7  st        |      dk7  r| j                  ||||||||      S t        j                  | dd||||||||      S )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/answerous/venv/lib/python3.12/site-packages/onnx/reference/ops/op_max_pool.pyr   zMaxPool._run   s     !Y3y>1S^q5HS\S\%AS\UVEV>>!##)+ " 	 	 %'
 	
    c	                (   |$t        t        |      dz        D 	cg c]  }	d }}	|!t        t        |            D 	cg c]  }	d }}	|!t        t        |            D 	cg c]  }	d }}	t        |      }
t        j                  t        |
      D 	cg c]  }	||	   ||	|
z      f c}	      }|j                  dd  }|D cg c]  }d }}|rt        t        |            D ]  }	t        t        j                  ||	   ||	   j                         z   ||	   dz
  ||	   z  dz   z
  ||	   z  dz               ||	<   ||	   dz
  ||	   z  ||	   ||	   d   z   k\  }|sv||	xx   dz  cc<    nlt        t        |            D ]U  }	t        t        j                  ||	   ||	   j                         z   ||	   dz
  ||	   z  dz   z
  ||	   z  dz               ||	<   W |r|dk7  r|dv rt        t        |            D ]  }	|dk(  r+t        t        j                  ||	   ||	   z              ||	<   n*t        t        j                  ||	   ||	   z              ||	<   ||	   dz
  ||	   z  ||	   dz
  ||	   z  dz   z   ||	   z
  }|dz  ||	df<   |||	df   z
  ||	df<    nXt        t        |            D ]A  }	t        t        j                  ||	   ||	   dz
  ||	   z  dz   z
  dz   ||	   z              ||	<   C t        |      dk(  r| j                  |||||||||	      S t        |      dk(  r| j                  |||||||||	      S t        |      dk(  r| j                  |||||||||	      S t        d|j                   d	      c c}	w c c}	w c c}	w c c}	w c c}w )
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   zMaxPool._max_pool6   s    <$S%6%:;<!A<D<?"'L(9":;Qq;G;$)#l*;$<=q=I=\"88%-PQd1gtAJ'78PQggabk+>?a??3234 1*-GG/2&qkoo/0 ,Q! 3y|CaGI "!*% 
+$Q' )+a/AJ8"5a"88A;q>"I8J4 8(+q0+!1$ 3234 *-HH/2&qkoo/0 ,Q! 3y|CaGI "!*% 
+$Q' H,77s#678 <A</25GG$7$:WQZ$GH3,Q/ 36HH%8%;gaj%HI3,Q/ .a014
B(Oa/9Q<?!CE-a01 
 &+aZHQTN%*Xad^%;HQTN<" s#678 
A.1 3A 6$0Oa$79Q<#G!#K!M"#!$ &aj)	/(+
 "#q($$$
 
 "#q($$$
 
 "#q($$$
 
 ;AGG9AFGGe =;= Q  @s   	M;	N "	NN
	Nc
                   d}
|j                   d d t        |	      z   }t        j                  ||j                        }t        j
                  |t        j                  d      }|j                   }|d   }|d   |d   |d   |z  }|
rdn|d   |d   |j                         |j                         |j                         fd}t        |      D ]
  } ||        t        | j                        dk(  rj                  |      fS j                  |      j                  |      fS )	NFr   dtyper7   
fill_valuer   r   c                   | z  }| z  }| z  }t              D ]g  }|z  d   z
  }|d   z  z   }d }d}t        ||      D ]%  }	|	dk  s|	k\  r|||	z      |kD  s||	z      }|	}' |||z   <   | z  |z   
||z   <   i y )Nr   r   r   r8   r    )cx_dy_di_dphhstarthendYhh_indexhI_dataX_dataY_data
dilation_hheightr   r/   pooled_heightstride_hx_stepy_steps             r   	iterationz'MaxPool._max_pool_1d.<locals>.iteration   s    f*Cf*Cf*CM* 8h$7Q* <<vtZ8 $A1uV zVC!G_r%9#C!G_"#$ $&sRx #$v:#7sRx 8r   )r$   tupler"   zerosr7   fullint64ravelr    r!   outputreshape)r   r   r	   r
   r   r   r/   r   r   r2   global_poolingy_dimsyindicesx_dimschannelstotal_channelsrQ   r>   rH   rI   rJ   rK   rL   rM   rN   rO   rP   s        ``            @@@@@@@@@r   r)   zMaxPool._max_pool_1d   s+    !u%9::HHV177+''&R@!9q	X-&1GAJq\
	8 	8$ ~& 	AaL	 t{{q NN6*,,v&v(>??r   c
                    d}
|j                   d d t        |	      z   }t        j                  ||j                        }t        j
                  |t        j                  d      }|j                   }|d   }|d   t              dkD  r|d   nd|d   t              dkD  r|d   nd|d   |z  }|
rdn|d   |
rdn|d   z  z  |d   |d   |j                         |j                         |j                         fd	}t        |      D ]
  } ||        t        | j                        dk(  rj                  |      fS j                  |      j                  |      fS )
NFr   r6   r8   r9   r   r   r   c                   | z  }| z  }t              D ]  }|z  d   z
  }|d   z  z   }t              D ]  }|z  d   z
  }|d   z  z   }|z  |z   }	d }
d}d}t        ||      D ]d  }|dk  s|k\  rt        ||      D ]G  }|dk  s|k\  r|z  |z   }|dk  s|j                  d   kD  r.|
||z      |
kD  s<||z      }
|}|}I f |
|
||	z   <   dk(  r| z  |z  z   |z   n| z  |z   |z  z   ||	z   <     y )Nr<   r   r   r   r   r8   )r    r$   ) r>   r?   r@   rB   rC   rD   pwwstartwend
pool_indexrE   rF   w_indexrG   winput_indexrH   rI   rJ   rK   
dilation_wrL   r   r/   rM   pooled_widthr   rN   stride_wwidthrO   rP   s                    r   rQ   z'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"64< ,q5AK$!&vtZ!@ 	,A 1uU
 (*+e)a-K*Q+Q2O (!zVC+4E-F-K%+C+,=%>*+*+	,, z /1F3+, )A- F
Wu_4w>Z'1Gf4DD 3+,/r   r$   rR   r"   rS   r7   rT   rU   r!   rV   r    rW   rX   ) r   r   r	   r
   r   r   r/   r   r   r2   rY   rZ   r[   r\   r]   r^   r_   rQ   r>   rH   rI   rJ   rK   rj   rL   rM   rk   rN   rl   rm   rO   rP   s         ```           @@@@@@@@@@@@@r   r*   zMaxPool._max_pool_2d   s~    !u%9::HHV177+''&R@!9 .2q	q	$'$5$9vayqX-&1GAJ&1GAJ%-q\
q\
!	 !	 !	F ~& 	AaL	 t{{q NN6*,,v&v(>??r   c
                   !"# d}
|j                   d d t        |	      z   }t        j                  ||j                        }t        j
                  |t        j                  d      }|j                   }|d   }|d   t              dkD  r|d   nd!t              dkD  r|d   nd|d   t              dkD  r|d   ndt              dkD  r|d   nd|d	   |z  }|
rdn|d	   |
rdn|d    |
rdn|d   !z  z  "z  z  #|d	   |d   |d   |j                         |j                         |j                          !"#fd
}t        |      D ]
  } ||        t        | j                        dk(  rj                  |      fS j                  |      j                  |      fS )NFr   r6   r8   r9   r   r      r   c           
        | (z  }| )z  }| )z  }t        !      D ]E  }|%z  d   z
  }|d   z  z   }t        "      D ]  }|&z  d   z
  }|d   z  z   }	t               D ]  }
|
$z  d   z
  }|d   z  z   }|"z   z  | z  z   |
z   }d }d}d}d}t        ||      D ]t  }|dk  s|k\  rt        ||	      D ]W  }|dk  s|'k\  rt        ||      D ]:  }|dk  s|k\  r|'z  z  |z  z   |z   }|||z      |kD  s-||z      }|}|}|}< Y v |||z   <   #dk(  r| (z  |'z  z  z   |z  z   |z   n| (z  |z   |z  z   |z  'z  z   ||z   <      H y )Nr<   r   rb   r   )r   r   r   r8   r=   )*r>   r?   r@   rA   rB   rC   rD   rc   rd   re   pddstartdendrf   rE   rF   rg   d_indexrG   rh   dri   rH   rI   rJ   depth
dilation_drK   rj   rL   r   r/   pooled_depthrM   rk   r   stride_drN   rl   rm   rO   rP   s*                         r   rQ   z'MaxPool._max_pool_3d.<locals>.iterationb  sW   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 # ""$"$"$!&vtZ!@ 4A 1uV (%*64%D 4#$q5AJ$,).vtZ)H !4A'(1uU
(023e)e2Ca%i2ORS2SK')zVC+<M5NQS5S-3C+4E-F232323!444  46sZ/0  -1 !"F
")E/E"9!:")E/!2 #*!* !"F
")!*")F"2!3 #*F"2U":!; sZ/07),/r   rn   )$r   r   r	   r
   r   r   r/   r   r   r2   rY   rZ   r[   r\   r]   r^   r_   rQ   r>   rH   rI   rJ   rw   rx   rK   rj   rL   ry   rM   rk   rz   rN   rl   rm   rO   rP   s$        ```           @@@@@@@@@@@@@@@@@r   r+   zMaxPool._max_pool_3d;  s    !u%9::HHV177+''&R@!9 .2q	 .2q	q	$'$5$9vayq$'$5$9vayqX-&1GAJ&1GAJ&1GAJ%%'-<q\
q\
q\
4	 4	 4	l ~& 	AaL	 t{{q NN6*,,v&v(>??r   )NNNNNNN)__name__
__module____qualname__r   r   r)   r*   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   