
    ^j<                        d Z ddlZddlZddlmZ ddl ddlmZmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlmZ dd	lmZ  ed,i d
e
de
dededededededededededededede de!dededededed ed!ed"eZ"e"jG                         D  ch c]  \  } }|	 c}} Z$ ee
e
eeeeeeeeee#      Z%e
eeeeeeeeeeeehZ&	 	 	 d-d$ed%e'd&ee   d'e(d(e(f
d)Z)	 d.d*ed&ee   fd+Z*yc c}} w )/aU   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                 x    t        | |      } ||fd|i|}|rt        j                  j                  |      }|S )N)r0   r1   )get_norm_act_layertorchr2   script)r.   r/   r0   r1   r2   kwargslayerlayer_instances           f/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/create_norm_act.pycreate_norm_act_layerr;   \   sA     zY?E<G9GGN
)).9    
norm_layerc                 8   | y t        | t        t        t        j                  t
        j                  f      sJ |6t        |t        t        t        j                  t
        j                  f      sJ i }t        | t
        j                        r'|j                  | j                         | j                  } t        | t              r?| sy | j                  dd      j                         j                  d      d   }t        |   }nd| t        v r| }nYt        | t        j                        r| }n<| j                  j                         }t         j#                  |d       }|
J d|        |t$        v r|j'                  d|       |rt        j                  |fi |}|S )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   sr    j4u/A/A9CTCT"UVVV
9tS%BTBTV_VgVg6h iiiO *i//0z223__
*c"''R0668>>sCAF
&z2		&#	J!3!3	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A17"&"    ( *. I& 	
 " *.&&I&&c 8s   (C>