
    RЦi<                        S r SSKrSSKrSSKJr  SSK7  SSKJrJr  SSK	J
r
JrJrJrJrJrJrJrJrJrJr  SSKJr  SS	KJr  \" S,0 S
\
_S\
_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\_S\ _S\!_S\_S\_S\_S\_S\_S \_S!\_S"\_6r"\"RG                  5        V Vs1 s H  u  pUiM	     snn r$\" \
\
\\\\\\\\\\S#9r%\
\\\\\\\\\\\\1r&   S-S$\S%\'S&\\   S'\(S(\(4
S) jjr) S.S*\S&\\   4S+ jjr*gs  snn f )/aT  NormAct (Normalization + Activation Layer) Factory

Create norm + act combo modules that attempt to be backwards compatible with separate norm + act
instances in models. Where these are used it will be possible to swap separate BN + act layers with
combined modules like IABN or EvoNorms.

Hacked together by / Copyright 2020 Ross Wightman
    N)Optional   )*)FilterResponseNormAct2dFilterResponseNormTlu2d)BatchNormAct2dGroupNormActGroupNorm1ActLayerNormActLayerNormActFp32LayerNormAct2dLayerNormAct2dFp32
RmsNormActRmsNormActFp32RmsNormAct2dRmsNormAct2dFp32)
InplaceAbn)	LayerType	batchnormbatchnorm2d	groupnorm
groupnorm1	layernormlayernorm2dlayernormfp32layernorm2dfp32	evonormb0	evonormb1	evonormb2	evonorms0
evonorms0a	evonorms1
evonorms1a	evonorms2
evonorms2afrnfrntlu
inplaceabniabnrmsnorm	rmsnorm2drmsnormfp32rmsnorm2dfp32)r   r   r   r   r   r   r   r   r*   r+   r,   r-   
layer_namenum_features	act_layer	apply_actjitc                 z    [        XS9nU" U4SU0UD6nU(       a  [        R                  R                  U5      nU$ )N)r0   r1   )get_norm_act_layertorchr2   script)r.   r/   r0   r1   r2   kwargslayerlayer_instances           Z/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/create_norm_act.pycreate_norm_act_layerr;   \   s?     z?E<G9GGN
)).9    
norm_layerc                    U c  g [        U [        [        [        R                  [
        R                  45      (       d   eUb;  [        U[        [        [        R                  [
        R                  45      (       d   e0 n[        U [
        R                  5      (       a'  UR                  U R                  5        U R                  n [        U [        5      (       aD  U (       d  g U R                  SS5      R                  5       R                  S5      S   n[        U   nOlU [        ;   a  U nO_[        U [        R                  5      (       a  U nO=U R                  R                  5       n[         R#                  US 5      nUc
   SU 35       eU[$        ;   a  UR'                  SU5        U(       a  [
        R                  " U40 UD6nU$ )N_ -r   z!No equivalent norm_act layer for r0   )
isinstancetypestrtypesFunctionType	functoolspartialupdatekeywordsfuncreplacelowersplit_NORM_ACT_MAP_NORM_ACT_TYPES__name___NORM_TO_NORM_ACT_MAPget_NORM_ACT_REQUIRES_ARG
setdefault)r=   r0   norm_act_kwargsr.   norm_act_layer	type_names         r:   r4   r4   k   s    j4u/A/A9CTCT"UVVVV
9tS%BTBTV_VgVg6h i iiiO *i//00z223__
*c""''R0668>>sCAF
&z2		&#	J!3!3	4	4# ''--/	.229dC)Z-Nyk+ZZ)// 	"";	:"**>M_Mr<    )NTF)N)+__doc__rE   rG   typingr   evo_normfilter_response_normr   r   norm_actr   r	   r
   r   r   r   r   r   r   r   r   inplace_abnr   r   dictEvoNorm2dB0EvoNorm2dB1EvoNorm2dB2EvoNorm2dS0EvoNorm2dS0aEvoNorm2dS1EvoNorm2dS1aEvoNorm2dS2EvoNorm2dS2arO   itemsrP   rR   rT   intboolr;   r4   )nms   00r:   <module>ro      s"       R    $    	
   # '         !" #$ 	 %& #'( )* 
+, -. /0 12 #36 "/!4!4!67!61!67"&"    ( *. I& 	
 " *.&&I&&c 8s   (D