
    kh[                         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            &       .    e Zd Zddddddddej                  ej
                  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           	         t         t        |           |xs 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        ||||d       | _        y )Nr   )r   r   r   r   r   r   )r   r!   drop)r   enablenoop)superr   __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!   use_aanorm_act_layer	__class__s                       S/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/layers/conv_bn_act.pyr'   zConvNormAct.__init__   s   ( 	k4)+!'R!'R%2
%4&1*!

 1F

 

	 /
IFN,6L)$#% 	DG mmoDG,6L)""6:<8Hl6&W[\    c                 .    | j                   j                  S N)r(   r   r-   s    r1   r   zConvNormAct.in_channelsJ   s    yy$$$r2   c                 .    | j                   j                  S r4   )r(   r   r5   s    r1   r   zConvNormAct.out_channelsN   s    yy%%%r2   c                     | j                  |      }| j                  |      }t        | dd       }|| j                  |      }|S )Nr,   )r(   r)   getattrr,   )r-   xr,   s      r1   forwardzConvNormAct.forwardR   sA    IIaLGGAJT4&>
Ar2   )__name__
__module____qualname__r   BatchNorm2dReLUintr
   boolr	   r   r   Moduler   strr   r'   propertyr   r   r:   __classcell__)r0   s   @r1   r   r      se   
  !!#"$&NN-/WW,048484837%8]8] 8] 	8]
 8] 8] 8] 8] 8] 8] 8] "8]  	*8] y)8] !bii18]  "$sCx.1!8]" "$sCx.1#8]$ !c3h0%8]t % % & &r2   r   N)__doc__typingr   r   r   r   torchr   r	   r
   	blur_poolr   r   create_norm_actr   rB   r   	ConvBnActConvNormActAa r2   r1   <module>rN      s@    - ,  &   ( /I")) IX 	r2   