o
    پi                     @   sB  d Z ddlmZmZmZ ddlT ddlT ddlmZm	Z	 de
ejjv Zde
ejjv Zde
ejjv Zd	e
ejjv Zed$i derEejned
erMejned	erUejnedejdejdejdejdejdejdededede de!derej"ne#derej$ne%de&Z'eerejne(erejne(erejne)erej"ne*erej$ne+e,dZ-e-e'fZ.e.D ]Z/e/0de/1d e/0de/1d qed$i derej2ne3d
erej2ne3d	erej4ne4dej5dej6dej7dej8de9dej:dej;de<de=de>de?de@derejAneBder&ejCneDdeEdejFZGeer8ej2neHer?ej2neHerFej4neIerMejAneJerTejCneKeLdZMeMeGfZNeND ]Z/e/0de/1d e/0de/1d q_d%deeeOf fddZPd%deeejQ eOf fdd ZRd&deeejQ eOf fd"d#ZSd!S )'zF Activation Factory
Hacked together by / Copyright 2020 Ross Wightman
    )UnionCallableType   )*)is_exportableis_scriptablesilu	hardswishhardsigmoidmishswishrelurelu6
leaky_relueluceluselugelu	gelu_tanh
quick_gelusigmoidtanhhard_sigmoid
hard_swish	hard_mish)r	   r   r   r   r   r   preluidentitynamec                 C   sB   | sdS t | tr| S |  } t st s| tv rt|  S t|  S )z Activation Function Factory
    Fetching activation fns by name with this function allows export or torch script friendly
    functions to be returned dynamically based on current config.
    N)
isinstancer   lowerr   r   
_ACT_FN_ME_ACT_FN_DEFAULTr    r$   J/home/ubuntu/.local/lib/python3.10/site-packages/timm/layers/create_act.py
get_act_fn[   s   
r&   c                 C   sN   | du rdS t | ts| S | sdS |  } t s#t s#| tv r#t|  S t|  S )z Activation Layer Factory
    Fetching activation layers by name with this function allows export or torch script friendly
    functions to be returned dynamically based on current config.
    N)r   strr    r   r   _ACT_LAYER_ME_ACT_LAYER_DEFAULTr#   r$   r$   r%   get_act_layerm   s   
r*   Nc                 K   s`   t | }|d u r
d S |d u r|di |S z
|dd|i|W S  ty/   |di | Y S w )Ninplacer$   )r*   	TypeError)r   r+   kwargs	act_layerr$   r$   r%   create_act_layer   s   r/   r$   )r   )N)T__doc__typingr   r   r   activationsactivations_meconfigr   r   dirtorchnn
functional	_has_silu_has_hardswish_has_hardsigmoid	_has_mishdictFr	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r
   r   r   r"   swish_memish_mehard_sigmoid_mehard_swish_mehard_mish_mer!   _ACT_FNSa
setdefaultgetSiLUSwishMishReLUReLU6	LeakyReLUELUPReLUCELUSELUGELUGELUTanh	QuickGELUSigmoidTanhHardsigmoidHardSigmoid	Hardswish	HardSwishHardMishIdentityr)   SwishMeMishMeHardSigmoidMeHardSwishMe
HardMishMer(   _ACT_LAYERSr'   r&   Moduler*   r/   r$   r$   r$   r%   <module>   s    	
		
	"