
    ^j                     R   d Z ddlZddlmZ ddlmc mZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZmZmZ dZ	 	 	 	 	 dd	ej*                  d
e	ej*                     deeef   deeef   deeef   defdZe G d dej0                               Z G d dej0                        Zd Zy)zK Conv2d 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           	      n    t        | |j                  dd  ||      } t        j                  | |||d||      S )Nr   r   )r
   shapeFconv2d)xr   r   r   r   r   r   s          b/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/conv2d_same.pyconv2d_samer      s:     	FLL%vx8A88AvtVVXvFF    c                        e Zd ZdZ	 	 	 	 	 	 	 ddededeeeeef   f   deeeeef   f   deeeeef   ef   deeeeef   f   ded	ef fd
Z	d Z
 xZS )
Conv2dSamezD Tensorflow like 'SAME' convolution wrapper for 2D convolutions
    in_channelsout_channelskernel_sizer   r   r   r   r   c                 8    t         |   ||||d||||	|

       y )Nr   devicedtype)super__init__selfr   r    r!   r   r   r   r   r   r$   r%   	__class__s              r   r'   zConv2dSame.__init__$   s5     	 	 	
r   c           	          t        || j                  | j                  | j                  | j                  | j
                  | j                        S )N)r   r   r   r   r   r   r   )r)   r   s     r   forwardzConv2dSame.forward>   s<    KKIIKKLLMMKK
 	
r   r   r   r   r   TNN__name__
__module____qualname____doc__intr   r   strboolr'   r,   __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                        e Zd ZdZ	 	 	 	 	 	 	 ddededeeeeef   f   deeeeef   f   deeeeef   ef   deeeeef   f   ded	ef fd
Z	d Z
 xZS )Conv2dSameExportz ONNX 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                 T    t         |   ||||d||||	|

       d | _        d| _        y )Nr   r#   r   )r&   r'   padpad_input_sizer(   s              r   r'   zConv2dSameExport.__init__Q   sF     	 	 	
 $r   c           	         |j                         dd  }| j                  ^t        || j                  j                         dd  | j                  | j
                        }t        j                  |      | _        || _        | j                  |      }t        j                  || j                  | j                  | j                  | j                  | j
                  | j                        S )Nr   )sizer;   r   r   r   r   nn	ZeroPad2dr<   r   r   r   r   r   )r)   r   
input_sizepad_args       r   r,   zConv2dSameExport.forwardm   s    VVXbc]
88":t{{/?/?/A"#/FUYUbUbcG||G,DH",DHHQKxxKKIIKKLLMMKK
 	
r   r-   r.   r7   s   @r   r9   r9   J   s     348945%% % sE#s(O34	%
 #uS#X./% 3c3h45% CsCx01% % %8
r   r9   c                    |j                  dd      }|j                  dd       t        ||fi |\  }}|r8t        r$t	               rt               rJ t        | ||fi |S t        | ||fi |S t        j                  | ||fd|i|S )Nr    r   F)
pop
setdefaultr   _USE_EXPORT_CONVr   r	   r9   r   r?   Conv2d)in_chsout_chsr!   kwargsr   
is_dynamics         r   create_conv2d_padrM      s    jjB'G
fe$+G[KFKGZ$&&#FG[KFKKfg{EfEEyy+QwQ&QQr   )Nr   r   r   rN   r   )r2   torchtorch.nnr?   torch.nn.functional
functionalr   typingr   r   r   _fxr   configr   r	   r   r
   r   r   rG   Tensorr3   r   rH   r   r9   rM    r   r   <module>rX      s        ) ) ( 0 > >   (,"(#)$*
G
G u||$
G c3h	
G
 sCx
G S/
G 
G '
 '
 '
T3
ryy 3
lRr   