
    Ng9                         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dS )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            &       X    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          |                                            |pi }|pi }|pi }|d uo|dk    }t          |||f|rdn|||||d|| _        |	r)t          ||          }|r||d<    ||f|
|d|| _        nBt          j                    | _        |r(||d<   | j        	                    d |                       t          ||||d           | _        d S )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/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/conv_bn_act.pyr'   zConvNormAct.__init__   sU   ( 	k4  ))+++!'R!'R%2
%4&1*!

 *11F

 

 

 

	  	9/
IFFN 7,6L)$n#%  	 DGG mooDG 9,6L)""6::<<888Hl6&W[\\\    c                     | j         j        S N)r(   r   r-   s    r1   r   zConvNormAct.in_channelsJ   s    y$$r2   c                     | j         j        S r4   )r(   r   r5   s    r1   r   zConvNormAct.out_channelsN   s    y%%r2   c                     |                      |          }|                     |          }| j        |                     |          }|S r4   )r(   r)   r,   )r-   xs     r1   forwardzConvNormAct.forwardR   s<    IIaLLGGAJJ7

Ar2   )__name__
__module____qualname__r   BatchNorm2dReLUintr
   boolr	   r   r   Moduler   strr   r'   propertyr   r   r9   __classcell__)r0   s   @r1   r   r      s       
  !!#"$&N-/W,048484837%8] 8]8] 8] 	8]
 8] 8] 8] 8] 8] 8] 8] "8]  	*8] y)8] !bi18]  "$sCx.1!8]" "$sCx.1#8]$ !c3h0%8] 8] 8] 8] 8] 8]t % % X% & & X&      r2   r   N)__doc__typingr   r   r   r   torchr   r	   r
   	blur_poolr   r   create_norm_actr   rA   r   	ConvBnActConvNormActAa r2   r1   <module>rM      s     - , , , , , , , , , , ,       & & & & & & & &             ( ( ( ( ( ( / / / / / /H H H H H") H H HV 	r2   