
    Ng                     6   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	 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 G d dej                  Z G d dej                  Zd ZdS )zK Conv2d w/ Same Padding

Hacked together by / Copyright 2020 Ross Wightman
    N)TupleOptional   )is_exportableis_scriptable)pad_samepad_same_argget_padding_valueFr   r   r   r   weightbiasstridepaddingdilationgroupsc           	      t    t          | |j        dd          ||          } t          j        | |||d||          S )Nr   )r   shapeFconv2d)xr   r   r   r   r   r   s          S/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/conv2d_same.pyconv2d_samer      s>     	FL%vx88A8AvtVVXvFFF    c                   4     e Zd ZdZ	 	 	 	 	 d fd	Zd Z xZS )
Conv2dSamezD Tensorflow like 'SAME' convolution wrapper for 2D convolutions
    r   r   Tc	           
      f    t          t          |                               ||||d|||           d S )Nr   )superr   __init__
selfin_channelsout_channelskernel_sizer   r   r   r   r   	__class__s
            r   r    zConv2dSame.__init__"   sC     	j$(({Ax	
 	
 	
 	
 	
r   c           	      h    t          || j        | j        | j        | j        | j        | j                  S )N)r   r   r   r   r   r   r   )r"   r   s     r   forwardzConv2dSame.forward2   s0    t{DIKt}dk
 
 	
r   r   r   r   r   T__name__
__module____qualname____doc__r    r(   __classcell__r&   s   @r   r   r      sg          
 
 
 
 
 
 
 
 
 
 
 
 
r   r   c                   4     e Zd ZdZ	 	 	 	 	 d 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   Tc	           
          t          t          |                               ||||d|||           d | _        d| _        d S )Nr   r   )r   r2   r    padpad_input_sizer!   s
            r   r    zConv2dSameExport.__init__@   sQ     	%%..{Ax	
 	
 	
 $r   c           	         |                                 dd          }| j        [t          || j                                         dd          | j        | j                  }t          j        |          | _        || _        |                     |          }t          j
        || j        | j        | j        | j        | j        | j                  S )Nr   )sizer4   r	   r   r   r   nn	ZeroPad2dr5   r   r   r   r   r   )r"   r   
input_sizepad_args       r   r(   zConv2dSameExport.forwardR   s    VVXXbcc]
8":t{/?/?/A/A"##/FUYUbccG|G,,DH",DHHQKKxt{DIKt}dk
 
 	
r   r)   r*   r0   s   @r   r2   r2   9   sg          % % % % % %$
 
 
 
 
 
 
r   r2   c                 2   |                     dd          }|                    dd           t          ||fi |\  }}|rCt          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   r2   r   r8   Conv2d)in_chsout_chsr%   kwargsr   
is_dynamics         r   create_conv2d_padrF   `   s    jjB''G
fe$$$+G[KKFKKGZ R 	F 	F$&&&#FG[KKFKKKfg{EEfEEEy+QQwQ&QQQr   )Nr   r   r   r   )r.   torchtorch.nnr8   torch.nn.functional
functionalr   typingr   r   configr   r   r   r   r	   r
   r@   Tensorintr   rA   r   r2   rF    r   r   <module>rP      s                    " " " " " " " " 0 0 0 0 0 0 0 0 > > > > > > > > > >   (,"(#)$*
G 
G
G u|$
G c3h	
G
 sCx
G S/
G 
G 
G 
G 
G
 
 
 
 
 
 
 
6$
 $
 $
 $
 $
ry $
 $
 $
NR R R R Rr   