
    kh              	          d Z ddlZddl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 ddlmZ  ed i ded	ed
e	d ej"                  e	d      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j9                         D  ch c]  \  } }|	 c}} Zee	e
eeeeehZd!dZd"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   )*)FilterResponseNormAct2dFilterResponseNormTlu2d)BatchNormAct2dGroupNormActLayerNormActLayerNormAct2d
RmsNormActRmsNormAct2d)
InplaceAbn	batchnormbatchnorm2d	groupnorm
groupnorm1
num_groups	layernormlayernorm2d	evonormb0	evonormb1	evonormb2	evonorms0
evonorms0a	evonorms1
evonorms1a	evonorms2
evonorms2afrnfrntlu
inplaceabniabnrmsnorm	rmsnorm2dc                 x    t        | |      } ||fd|i|}|rt        j                  j                  |      }|S )N)	act_layer	apply_act)get_norm_act_layertorchjitscript)
layer_namenum_featuresr&   r'   r*   kwargslayerlayer_instances           W/var/www/teggl/fontify/venv/lib/python3.12/site-packages/timm/layers/create_norm_act.pycreate_norm_act_layerr2   6   s?    zY?E<G9GGN
)).9    c                 R   | 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        |   }n| t        v r| }nt        | t        j                        r| }n| j                  j                         }|j!                  d      rt"        }n|j!                  d      rt$        }n|j!                  d      rt        j                  t$        d	      }nR|j!                  d
      rt&        }n:|j!                  d      rt(        }n"|j!                  d      rt*        }n
J d|        |t,        v r|j/                  d|       |rt        j                  |fi |}|S )N_ -r   r   r   r   r   r   r   r   r$   z!No equivalent norm_act layer for r&   )
isinstancetypestrtypesFunctionType	functoolspartialupdatekeywordsfuncreplacelowersplit_NORM_ACT_MAP_NORM_ACT_TYPES__name__
startswithr   r   r
   r	   r   _NORM_ACT_REQUIRES_ARG
setdefault)
norm_layerr&   norm_act_kwargsr,   norm_act_layer	type_names         r1   r(   r(   >   s   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#''--/	,+N!!+.)N!!,/&..|JN!!-0+N!!+.)N!!+.)NI=i[II5// 	"";	:"**>M_Mr3    )NTF)N)!__doc__r;   r=   evo_normfilter_response_normr   r   norm_actr   r   r	   r
   r   r   inplace_abnr   dictr>   EvoNorm2dB0EvoNorm2dB1EvoNorm2dB2EvoNorm2dS0EvoNorm2dS0aEvoNorm2dS1EvoNorm2dS1aEvoNorm2dS2EvoNorm2dS2arE   itemsrF   rI   r2   r(   )nms   00r1   <module>rb      sX      R j j #   !y  !<	
             	 !" ##$ %& 
'( )* +. "/!4!4!67A17 	 -- 8s   B;