
    ^j                         d Z ddlmZmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ  G d	 d
ej                        ZeZeZy)zF Conv2d + BN + Act

Hacked together by / Copyright 2020 Ross Wightman
    )AnyDictOptionalType)nn   )	LayerTypePadType)	create_aa)create_conv2d)get_norm_act_layerc            &       2    e Zd Zddddddddej                  ej
                  dddddddfdededed	ed
edededededede	de
e	   de
e	   de
eej                        de
eeef      de
eeef      de
eeef      f" fdZed        Zed        Zd Z xZS )ConvNormActr    FTNin_channelsout_channelskernel_sizestridepaddingdilationgroupsbias
apply_norm	apply_act
norm_layer	act_layeraa_layer
drop_layerconv_kwargsnorm_kwargs
act_kwargsc           	         ||d}t         |           i ||xs i }i ||xs i }|xs i }|d uxr |dkD  }t        |||f|rdn|||||d|| _        |	r%t	        ||      }|r||d<    ||f|
|d|| _        nAt        j                         | _        |r&||d<   | j
                  j                  d |              t        ||f||d d|| _
        y )N)devicedtyper   )r   r   r   r   r   r   )r   r!   drop)r   enablenoop)super__init__r   convr   bnr   
Sequential
add_moduler   aa)selfr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r#   r$   dduse_aanorm_act_layer	__class__s                          b/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/conv_bn_act.pyr)   zConvNormAct.__init__   s8   , /33 1r333 1r3%2
%4&1*!

 1F

 

	 /
IFN,6L)$#% 	DG mmoDG,6L)""6:<8
 
 
    c                 .    | j                   j                  S N)r*   r   r/   s    r4   r   zConvNormAct.in_channelsT   s    yy$$$r5   c                 .    | j                   j                  S r7   )r*   r   r8   s    r4   r   zConvNormAct.out_channelsX   s    yy%%%r5   c                     | j                  |      }| j                  |      }t        | dd       }|| j                  |      }|S )Nr.   )r*   r+   getattrr.   )r/   xr.   s      r4   forwardzConvNormAct.forward\   sA    IIaLGGAJT4&>
Ar5   )__name__
__module____qualname__r   BatchNorm2dReLUintr
   boolr	   r   r   Moduler   strr   r)   propertyr   r   r=   __classcell__)r3   s   @r4   r   r      sk   
  !!#"$&NN-/WW,048484837)B
B
 B
 	B

 B
 B
 B
 B
 B
 B
 B
 "B
  	*B
 y)B
 !bii1B
  "$sCx.1!B
" "$sCx.1#B
$ !c3h0%B
H % % & &r5   r   N)__doc__typingr   r   r   r   torchr   r	   r
   	blur_poolr   r   create_norm_actr   rE   r   	ConvBnActConvNormActAa r5   r4   <module>rQ      s@    - ,  &   ( /S")) Sl 	r5   