
    RЦiR                         S r SSKrSSKJr  SSKJr  SSKJrJr  SSK	J
r
JrJrJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJrJr  SSKJr  SSKJr  SSK J!r!J"r"  S r#S r$g)zEAttention 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                 ~   [        U [        R                  R                  5      (       a  U $ S nU (       Ga  [        U [        5      (       GaK  U R                  5       n U S:X  a  [        nU$ U S:X  a  [        nU$ U S:X  a  [        nU$ U S:X  a  [        [        SS9nU$ U S:X  a  [        nU$ U S:X  a  [        nU$ U S	:X  a  [        nU$ U S
:X  a  [        [        SSS9nU$ U S:X  a  [        nU$ U S:X  a  [        nU$ U S:X  a  [        nU$ U S:X  a  [         nU$ U S:X  a  ["        nU$ U S:X  a  [$        nU$ U S:X  a  [&        nU$ U S:X  a  [(        nU$ U S:X  a  [*        $ U S:X  a  [,        $ U S:X  a  [.        $ U S:X  a  [0        nU$ U S:X  a  [2        nU$  SU -  5       e[        U [4        5      (       a  U (       a  [        nU$ U nU$ )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     V/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/layers/create_attn.pyget_attnr;      sm   )UXX__--Ji%%!)I D %
t s e#.
p o e#&
l k f$$Y=
h g f$'
d c d")
` _ d"*
\ [ e#$]Te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89DDu	4((%
  #J    c                 2    [        U 5      nUb	  U" U40 UD6$ g )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<   