Ë
    éÓ^jR  ã                   óÔ   — d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
mZmZmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ddl m!Z!m"Z" d„ Z#d„ Z$y)zF Attention Factory

Hacked together by / Copyright 2021 Ross Wightman
é    N)Úpartialé   )ÚBottleneckAttn)Ú
CbamModuleÚLightCbamModule)Ú	CoordAttnÚEfficientLocalAttnÚ	StripAttnÚSimpleCoordAttn)Ú	EcaModuleÚ
CecaModule)ÚGatherExcite)ÚGlobalContext)ÚHaloAttn)ÚLambdaLayer)ÚNonLocalAttnÚBatNonLocalAttn)ÚSelectiveKernel)Ú	SplitAttn)ÚSEModuleÚEffectiveSEModulec                 ó.  — t        | t        j                  j                  «      r| S d }| �rit        | t        «      �r<| j                  «       } | dk(  rt        }|S | dk(  rt        }|S | dk(  rt        }|S | dk(  rt        t        d¬«      }|S | dk(  rt        }|S | dk(  rt        }|S | d	k(  rt        }|S | d
k(  rt        t        dd¬«      }|S | dk(  rt        }|S | dk(  rt        }|S | dk(  rt        }|S | dk(  rt         }|S | dk(  rt"        }|S | dk(  rt$        }|S | dk(  rt&        }|S | dk(  rt(        }|S | dk(  rt*        S | dk(  rt,        S | dk(  rt.        S | dk(  rt0        }|S | dk(  rt2        }|S J d| z  «       ‚t        | t4        «      r
| rt        }|S | }|S )NÚseÚeseÚecaÚecamT)Úuse_mlpÚcecaÚgeÚgcÚgcaF)Úfuse_addÚ
fuse_scaleÚcbamÚlcbamÚcoordÚscoordÚelaÚstripÚskÚsplatÚlambdaÚ
bottleneckÚhaloÚnlÚbatzInvalid attn module (%s))Ú
isinstanceÚtorchÚnnÚModuleÚstrÚlowerr   r   r   r   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Úbool)Ú	attn_typeÚ
module_clss     úb/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/create_attn.pyÚget_attnr;      sd  € Ü�)œUŸX™XŸ_™_Ô-ØÐØ€JÚÜ�i¤Õ%Ø!Ÿ™Ó)ˆIð ˜DÒ Ü%�
ðt Ððs ˜eÒ#Ü.�
ðp Ððo ˜eÒ#Ü&�
ðl Ððk ˜fÒ$Ü$¤Y¸Ô=�
ðh Ððg ˜fÒ$Ü'�
ðd Ððc ˜dÒ"Ü)�
ð` Ðð_ ˜dÒ"Ü*�
ð\ Ðð[ ˜eÒ#Ü$¤]¸TÈeÔT�
ðX ÐðW ˜fÒ$Ü'�
ðT ÐðS ˜gÒ%Ü,�
ðP ÐðO ˜gÒ%Ü&�
ðL ÐðK ˜hÒ&Ü,�
ðH ÐðG ˜eÒ#Ü/�
ðD ÐðC ˜gÒ%Ü&�
ð@ Ðð7 ˜dÒ"Ü,�
ð4 Ðð3 ˜gÒ%Ü&�
ð0 Ðð' ˜hÒ&Ü"Ð"Ø˜lÒ*Ü%Ð%Ø˜fÒ$Ü�Ø˜dÒ"Ü)�
ð Ðð ˜eÒ#Ü,�
ð Ðð EÐ8¸9ÑDÓD�uÜ˜	¤4Ô(ÙÜ%�
ð Ðð #ˆJØÐó    c                 ó0   — t        | «      }|�	 ||fi |¤ŽS y )N)r;   )r8   ÚchannelsÚkwargsr9   s       r:   Úcreate_attnr@   ]   s%   € Ü˜)Ó$€JØÐá˜(Ñ- fÑ-Ð-Ør<   )%Ú__doc__r2   Ú	functoolsr   Úbottleneck_attnr   r$   r   r   Ú
coord_attnr   r	   r
   r   r   r   r   Úgather_exciter   Úglobal_contextr   Ú	halo_attnr   Úlambda_layerr   Únon_local_attnr   r   Úselective_kernelr   Ú
split_attnr   Úsqueeze_exciter   r   r;   r@   © r<   r:   ú<module>rN      sE   ðñó Ý å +ß -ß QÓ Qß &Ý 'Ý )Ý Ý %ß 9Ý -Ý !ß 7òDóNr<   