Ë
    éÓ^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   € ô ˜z°YÔ?€EÙ˜<ÑG°9ÐGÀÑG€NÙ
ÜŸ™×)Ñ)¨.Ó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  € ð ÐØÜ�j¤4¬¬u×/AÑ/AÄ9×CTÑCTÐ"UÔVÐVÐVØÐ¤
¨9´t¼SÄ%×BTÑBTÔV_×VgÑVgÐ6hÔ iÐiÐiØ€Oô �*œi×/Ñ/Ô0Ø×Ñ˜z×2Ñ2Ô3Ø—_‘_ˆ
ä�*œcÔ"ÙØØ×'Ñ'¨¨RÓ0×6Ñ6Ó8×>Ñ>¸sÓCÀAÑFˆ
Ü& zÑ2‰Ø	”Ñ	&Ø#‰Ü	�J¤×!3Ñ!3Ô	4à#‰ð ×'Ñ'×-Ñ-Ó/ˆ	Ü.×2Ñ2°9¸dÓCˆØÐ)ÐZÐ-NÈyÈkÐ+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™˜˜A’1Ó7€áØØØØØØØ"Ø&ØØØØ"ôÐ ð  ØØØØØØØØØØØØðÐ ð( *.ØØñØðàðð ˜IÑ&ðð ð	ð
 óð" *.ñ&Øð&à˜IÑ&ô&ùóc 8s   Â(C>