
    h                     @    S SK rS SKJr  S rS rS r " S S\5      rg)    N)OpRunc                 H   [         R                  " U[         R                  S9n[        [	        U5      5       Vs/ s H  n[        SX   5      PM     nnS/[	        U5      -  nX   XP'   [         R                  " X   5      R                  U5      nXb[        U5      '   U$ s  snf )Ndtyper      )	npemptyint64rangelenslicearangereshapetuple)dimshapemiind	new_shapefirsts          h/var/www/fran/franai/venv/lib/python3.13/site-packages/onnx/reference/ops_optimized/op_conv_optimized.py	_make_indr      s    
bhh'A',SZ'8
9'8!5EH'8C
9c%j IZINIIej!)))4EeCjMH :s   Bc                    [        U5      nU R                  S S u  pV[        R                  " U5      n/ n[	        U5       H@  u  pU R                  SU	-      nUR                  XU	   -   X)U-      -   U
-
  X9   -  S-   5        MB     / n[        [        U5      5       Hw  n	[        X5      n[        X5      X9   -  n[        R                  " UR                  5       U5      R                  SS5      UR                  SS5      -   nUR                  U5        My     [        R                  " [        R                  " U5      U5      R                  SS5      nS/S-  n[        U5       V	s/ s H  oU	   X)U-      4PM     nn	[        R                  " U [        U5      [        U5      -   SS9n[        SU5      U/UQ7nUU   n[        R                   " USS9nU[        U5      4$ s  sn	f )	N   r   )r   r   constant)moder   )axis)r   r   r   prod	enumerateappendr   r   tileravelr   repeatr   padr   r   concatenate)Xkernel_shapepadsstridesn_dimsr   n_Ckernel_size	shape_outr   r   dxindiceskindiindindexdncpaddingX_paddedgetitemcols	conc_colss                          r   im2col_fastr<      s   FWWRa[FA'','KIL)WWQU^"Aw,&j)99C?GJNQRRS * G3y>")&3

c*222q9DLLB<OOu	 # 			"))C.+.66r1=A
AB49&MBMqQ&j)*MGBvvarU7^3*EHQ{A((GGDt"-IeI&&& Cs   #Gc	                    Uc  U R                   SS   V	s/ s H  n	SPM     nn	Uc  UR                   SS  nUc#  U R                   SS   V	s/ s H  n	SPM     sn	S-  nUc  U R                   SS   V	s/ s H  n	SPM     nn	[        U5      nU R                   S   UR                   S   U-  :w  d  UR                   S   U-  S:w  a  [        SU R                    SUR                    SU SUR                   S   U R                   S   U-  [        R                  " UR                   SS  5      U R                   S   -  U-  4 S3	5      eUS:  Ga  / n
SnUR                   S   U-  nUR                   S   n[        U R                   S   5       Hv  n[        U5       Hd  nXUS-   2X-  US-   U-  24   nXU-  US-   U-   n [        UUS UUSUUU5	      nUS:X  a  UUR                   S   -  nU
R                  UU45        Mf     Mx     U R                   S   /[        U
S   S   R                   SS  5      QnUUS'   [        R                  " [        U5      U
S   S   R                  S9nSnU
 HL  u  nnUUXS-   2UUUR                   S   -   24'   UUR                   S   -  nUUR                   S   :  d  MJ  SnMN     UbM  UR                    V	s/ s H  n	SPM     nn	UR                   S   US'   UR                  [        U5      5      nUU-  nU$ US   S:w  d  [        U5      [        U5      :w  Gau  [        U5      n/ n[        UR                   S U*  5      n[!        U5       H{  u  nn[        UR                   5      U-
  U-   nUR                  UR                   U   UR                   U   S-
  US-
  -  -   5        UR                  UU   UU   S-
  US-
  -  -   5        M}     [        R                  " [        U5      UR                  S9n[#        SUR                   S   5      [#        SUR                   S   5      /n[!        U5       HJ  u  nn[        UR                   5      U-
  U-   nUR                  [#        SUR                   U   U5      5        ML     UU[        U5      '   UnUnUS;   a  / n/ n[        [        U R                   5      S-
  5       Hr  nU R                   U   nUUU   -   S-
  UU   -  n U S-
  UU   -  UU   -   U-
  n!US:X  a	  U!S-   S-  n"OU!S-  n"U!U"-
  n#UR                  U"5        UR                  U#5        Mt     UU-   n[%        XXx5      u  n$n%UR                  SU$R                   S   45      n&U&U$-  n'U'R                  UR                   S   U R                   S   /U%Q75      n'SS/[        [        R&                  " [        U R                   5      S-
  5      S-   5      Q7n(U'R)                  U(5      n'UbP  UR*                  S:X  a  U'U-   $ S/[        U'R                   5      -  nSUS'   U'UR                  [        U5      5      -  n'U'$ s  sn	f s  sn	f s  sn	f ! [        [        4 a[  n[        SU R                    SUR                    SU S	U S
UR                    SUR                    SU SU SU SU SU S35      UeS nAff = fs  sn	f )Nr   r   r   zShape inconsistencies, X.shape=z
, W.shape=z, group=z, W should be ./z, gx.shape=z, gw.shape=z, auto_pad=z, dilations=z, kernel_shape=z, pads=z
, strides=r   >   VALID
SAME_LOWER
SAME_UPPERrA   r   )r   r   
ValueErrorr   r    r   _conv_implementation_im2colRuntimeErrorr"   listzerosr   r   minmaxr   r!   r   r<   r   	transposesize))r(   WBauto_pad	dilationsgroupr)   r*   r+   srestdmgdwbggxgwcver   finalpndnew_kernel_shaper   r5   dinew_wr1   headtailtarget_size
pad_neededpad_headpad_tailc2	out_shape
w_reshapedmulperms)                                            r   rD   rD   2   s     !,1Q	,wwqr{|7712;';a;'!+ggabk*k1k*&LwwqzQWWQZ%''1771:+=+B-aggYj	RWQX YGGAJ
e(;RWWQWWQR[=QUVU\U\]^U_=_bg=ghiijl
 	
 qyWWQZ5 WWQZqwwqz"A5\1q5y!&AER<"7782vQ"-4 !$
B$ 6"((1+%B

Ar7#1 " #6 WWQZ<$s1vayqr':";<		!y)QAEAr46E!!e)QRXXa[001!AEKKN"	 
 =$)KK0KqKI0771:IaL		%	*+AQJE|qC	Nc)n<^2#'	i(DAqQWW"Q&BQWWR[AGGBK!OA+FFG##LO|A7JqSTu6U$UV ) y)9EKKN+U1ekk!n-EFi(DAqQWW"Q&BNN5EKKOQ78 ) !"eGn'88s177|a'(A
Awqz>A-'!*<K%/WQZ7,q/IAMJ<'&Nq0%?!H,HKK!KK! ) d{?MB	B,-J
r/C
++qwwqz1771::	:
;Cq:53qww<!#34q89:D
--
C}66Q;7NC#cii.(		!qyyy)**J] - (*< #L1 $9!''*QWWIU]^_]``abgah i$$&HH:[
+hZ X%%.K|nGTXSY Z##*)1.
 * 1s0   Y
	Y/Y9Y[[)AZ??[c                   ,    \ rS rSr       SS jrSrg)Conv   Nc
                     [        UR                  5      S:  a  [        SUR                   S35      e[        XX4XVXxU	5	      R	                  UR
                  5      4$ )N   z3X must have at least 3 dimensions but its shape is r>   )r   r   rC   rD   astyper   )
selfr(   rL   rM   rN   rO   rP   r)   r*   r+   s
             r   _run	Conv._run   s]     qww<!EaggYaP 
 (a9\fQWWo	
 	
     )NNNNNNN)__name__
__module____qualname____firstlineno__rt   __static_attributes__rw   rv   r   rn   rn      s    
 
rv   rn   )numpyr   onnx.reference.op_runr   r   r<   rD   rn   rw   rv   r   <module>r      s*     '':rj
5 
rv   