
    RЦi                     V   S r SSKrSSKJr  SSKJs  Jr  SSKJrJ	r	J
r
  SSKJr  SSKJrJr  SSKJrJrJr  Sr     SS	\R*                  S
\	\R*                     S\\\4   S\\\4   S\\\4   S\4S jjr\ " S S\R0                  5      5       r " S S\R0                  5      rS rg)zJConv2d w/ Same Padding

Hacked together by / Copyright 2020 Ross Wightman
    N)TupleOptionalUnion   )register_notrace_module)is_exportableis_scriptable)pad_samepad_same_argget_padding_valueFweightbiasstridepaddingdilationgroupsc           	      f    [        XR                  SS  X55      n [        R                  " XX#SXV5      $ )Nr   r   )r
   shapeFconv2d)xr   r   r   r   r   r   s          V/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/conv2d_same.pyconv2d_samer      s0     	LL%v8A88AtVXFF    c                      ^  \ rS rSrSr       SS\S\S\\\\\4   4   S\\\\\4   4   S\\\\\4   \4   S\\\\\4   4   S	\S
\	4U 4S jjjr
S rSrU =r$ )
Conv2dSame   zCTensorflow like 'SAME' convolution wrapper for 2D convolutions
    in_channelsout_channelskernel_sizer   r   r   r   r   c                 2   > [         TU ]  UUUUSUUUU	U
S9
  g )Nr   devicedtype)super__init__selfr    r!   r"   r   r   r   r   r   r%   r&   	__class__s              r   r(   Conv2dSame.__init__$   s5     	 	 	
r   c           	          [        UU R                  U R                  U R                  U R                  U R
                  U R                  5      $ )N)r   r   r   r   r   r   r   )r*   r   s     r   forwardConv2dSame.forward>   s<    KKIIKKLLMMKK
 	
r    r   r   r   r   TNN__name__
__module____qualname____firstlineno____doc__intr   r   strboolr(   r.   __static_attributes____classcell__r+   s   @r   r   r      s     348945

 
 sE#s(O34	

 #uS#X./
 3c3h45
 CsCx01
 
 
 
4	
 	
r   r   c                      ^  \ rS rSrSr       SS\S\S\\\\\4   4   S\\\\\4   4   S\\\\\4   \4   S\\\\\4   4   S	\S
\	4U 4S jjjr
S rSrU =r$ )Conv2dSameExportJ   zONNX export friendly Tensorflow like 'SAME' convolution wrapper for 2D convolutions

NOTE: This does not currently work with torch.jit.script
r    r!   r"   r   r   r   r   r   c                 N   > [         TU ]  UUUUSUUUU	U
S9
  S U l        SU l        g )Nr   r$   r   )r'   r(   padpad_input_sizer)   s              r   r(   Conv2dSameExport.__init__Q   sF     	 	 	
 $r   c           	         UR                  5       SS  nU R                  c]  [        X R                  R                  5       SS  U R                  U R
                  5      n[        R                  " U5      U l        X l        U R                  U5      n[        R                  " UU R                  U R                  U R                  U R                  U R
                  U R                  5      $ )Nr   )sizerB   r   r   r   r   nn	ZeroPad2drC   r   r   r   r   r   )r*   r   
input_sizepad_args       r   r.   Conv2dSameExport.forwardm   s    VVXbc]
88":{{/?/?/A"#/FUYUbUbcG||G,DH",HHQKxxKKIIKKLLMMKK
 	
r   )rB   rC   r1   r2   r=   s   @r   r?   r?   J   s     348945%% % sE#s(O34	%
 #uS#X./% 3c3h45% CsCx01% % % %8
 
r   r?   c                 2   UR                  SS5      nUR                  SS5        [        XB40 UD6u  pEU(       aE  [        (       a-  [	        5       (       a  [        5       (       a   e[        XU40 UD6$ [        XU40 UD6$ [        R                  " XU4SU0UD6$ )Nr    r   F)
pop
setdefaultr   _USE_EXPORT_CONVr   r	   r?   r   rG   Conv2d)in_chsout_chsr"   kwargsr   
is_dynamics         r   create_conv2d_padrV      s    jjB'G
fe$+GKFKG$&&#F[KFKKf{EfEEyy+QwQ&QQr   )Nr   r   r   rW   r   )r7   torchtorch.nnrG   torch.nn.functional
functionalr   typingr   r   r   _fxr   configr   r	   r   r
   r   r   rP   Tensorr8   r   rQ   r   r?   rV   r0   r   r   <module>r`      s        ) ) ( 0 > >   (,"(#)$*
G
G u||$
G c3h	
G
 sCx
G S/
G 
G '
 '
 '
T3
ryy 3
lRr   