
    Ng              	       P   d Z ddlZddlZddlT ddlmZmZ ddl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Zd e                                D             Zee	e
eeehZd"dZd#d ZdS )$aU   NormAct (Normalizaiton + Activation Layer) Factory

Create norm + act combo modules that attempt to be backwards compatible with separate norm + act
isntances 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)
InplaceAbn	batchnormbatchnorm2d	groupnorm
groupnorm1
num_groups	layernormlayernorm2d	evonormb0	evonormb1	evonormb2	evonorms0
evonorms0a	evonorms1
evonorms1a	evonorms2
evonorms2afrnfrntlu
inplaceabniabnc                     h | ]\  }}|S  r"   ).0nms      W/var/www/html/ai-engine/env/lib/python3.11/site-packages/timm/layers/create_norm_act.py	<setcomp>r'   &   s    777A1777    TFc                     t          | |          } ||fd|i|}|rt          j                            |          }|S )N)	act_layer	apply_act)get_norm_act_layertorchjitscript)
layer_namenum_featuresr*   r+   r.   kwargslayerlayer_instances           r&   create_norm_act_layerr5   ,   sS    zY???EU<GG9GGGN
 :)).99r(   c                 z   | d S t          | t          t          t          j        t
          j        f          sJ |4t          |t          t          t          j        t
          j        f          sJ i }t          | t
          j                  r!|                    | j                   | j	        } t          | t                    rS| sd S | 
                    dd                                                              d          d         }t          |         }n| t          v r| }nt          | t          j                  r| }n| j                                        }|                    d          rt"          }n|                    d          rt$          }nx|                    d          rt          j        t$          d	          }nG|                    d
          rt&          }n*|                    d          rt(          }nJ d|             |t*          v r|                    d|           |rt          j        |fi |}|S )N_ -r   r   r   r   r   r   r   r   Fz!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	   _NORM_ACT_REQUIRES_ARG
setdefault)
norm_layerr*   norm_act_kwargsr0   norm_act_layer	type_names         r&   r,   r,   4   sB   tj4u/A9CT"UVVVVV
9tS%BTV_Vg6h i iO *i/00 %z2333_
*c"" J 	4''R006688>>sCCAF
&z2		&	&#	J!3	4	4 J#'--//	,, 	J+NN!!+.. 		J)NN!!,// 	J&.|JJJNN!!-00 	J+NN!!+.. 	J)NNIIiIIIII/// 	"";	::: N"*>MM_MMr(   r"   )NTF)N)__doc__r=   r?   evo_normfilter_response_normr   r   norm_actr   r   r	   r
   inplace_abnr   dictr@   EvoNorm2dB0EvoNorm2dB1EvoNorm2dB2EvoNorm2dS0EvoNorm2dS0aEvoNorm2dS1EvoNorm2dS1aEvoNorm2dS2EvoNorm2dS2arG   itemsrH   rK   r5   r,   r"   r(   r&   <module>ra      s             R R R R R R R R P P P P P P P P P P P P # # # # # #   n l !y !<<<<	
 l  k k k k | k | k |  	 !" #"#$ z%& 
'* 87!4!4!6!6777 L,@WYce    + + + + + +r(   