a
    d                  	   @   sz   d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 e
ejejejeeee	dZdd e D Zdd	 Zd
d ZdS )z Norm Layer Factory

Create norm modules by string (to mirror create_act and creat_norm-act fns)

Copyright 2022 Ross Wightman
    N   )	GroupNorm
GroupNorm1	LayerNormLayerNorm2d)Z	batchnormZbatchnorm2dZbatchnorm1dZ	groupnormZ
groupnorm1Z	layernormZlayernorm2dc                 C   s   h | ]\}}|qS  r   ).0nmr   r   `/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/timm/layers/create_norm.py	<setcomp>       r   c                 K   s   t | }||fi |}|S )N)get_norm_layer)
layer_nameZnum_featureskwargsZlayerZlayer_instancer   r   r   create_norm_layer   s    r   c                 C   s   t | tttjtjfsJ i }t | tjr<|| j | j	} t | tr`| 
dd}t|d } nT| tv rn| } nFt | tjr| } n4| j 
dd}t|d } | d usJ d| |rtj| fi |} | S )N_ zNo equivalent norm layer for )
isinstancetypestrtypesFunctionType	functoolspartialupdatekeywordsfuncreplace	_NORM_MAPget_NORM_TYPES__name__lower)Z
norm_layerZnorm_kwargsr   	type_namer   r   r   r       s$    
r   )__doc__r   r   Ztorch.nnnnZnormr   r   r   r   dictZBatchNorm2dZBatchNorm1dr   itemsr!   r   r   r   r   r   r   <module>   s    	