
    ^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   )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                 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<   