
    RЦiZ                     N   S r SSKJr  SSKJrJrJrJrJrJ	r	  SSK
r
SSKJr  SSKJrJr  SSKJrJrJrJrJ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  / SQr  " S S\RB                  5      r" " S S\RB                  5      r# " S S\RB                  5      r$ " S S\RB                  5      r% " S S\RB                  5      r&S5S jr'S6S jr(S7S jr)\" \)" SSSS9\)" SSS9\)" SS SS9\)" SS!S9\)" SS"S9\)" SS#SS9\)" SS$S9\)" SS%S9\)" SS&S9\)" SS'S(S9S).
5      r*\S6S*\&4S+ jj5       r+\S6S*\&4S, jj5       r,\S6S*\&4S- jj5       r-\S6S*\&4S. jj5       r.\S6S*\&4S/ jj5       r/\S6S*\&4S0 jj5       r0\S6S*\&4S1 jj5       r1\S6S*\&4S2 jj5       r2\S6S*\&4S3 jj5       r3\S6S*\&4S4 jj5       r4g)8a2  Class-Attention in Image Transformers (CaiT)

Paper: 'Going deeper with Image Transformers' - https://arxiv.org/abs/2103.17239

Original code and weights from https://github.com/facebookresearch/deit, copyright below

Modifications and additions for timm hacked together by / Copyright 2021, Ross Wightman
    )partial)ListOptionalTupleUnionTypeAnyNIMAGENET_DEFAULT_MEANIMAGENET_DEFAULT_STD)
PatchEmbedMlpDropPathtrunc_normal_use_fused_attn   )build_model_with_cfg)feature_take_indices)
checkpointcheckpoint_seq)register_modelgenerate_default_cfgs)Cait	ClassAttnLayerScaleBlockClassAttnLayerScaleBlockTalkingHeadAttnc                      ^  \ rS rSr% \R
                  R                  \   \S'         SS\	S\	S\S\
S\
4
U 4S jjjrS	 rS
rU =r$ )r      
fused_attndim	num_headsqkv_bias	attn_drop	proj_dropc                   > [         T
U ]  5         XgS.nX l        X-  n	U	S-  U l        [	        5       U l        [        R                  " X4SU0UD6U l        [        R                  " X4SU0UD6U l	        [        R                  " X4SU0UD6U l
        [        R                  " U5      U l        [        R                  " X40 UD6U l        [        R                  " U5      U l        g )Ndevicedtype      bias)super__init__r"   scaler   r    nnLinearqkvDropoutr$   projr%   selfr!   r"   r#   r$   r%   r(   r)   ddhead_dim	__class__s             O/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/cait.pyr-   ClassAttn.__init__    s     	/"#%
(*39(9b939(9b939(9b9I.IIc-"-	I.    c                    UR                   u  p#nU R                  US S 2S4   5      R                  S5      R                  USU R                  X@R                  -  5      R                  SSSS5      nU R                  U5      R                  X#U R                  X@R                  -  5      R                  SSSS5      nU R                  U5      R                  X#U R                  X@R                  -  5      R                  SSSS5      nU R                  (       aQ  [        R                  R                  R                  XVUU R                  (       a  U R                  R                  OSS9nOFXPR                   -  nXVR#                  SS5      -  n	U	R%                  SS	9n	U R                  U	5      n	X-  nUR#                  SS5      R                  USU5      nU R'                  U5      nU R)                  U5      nU$ )
Nr   r                 )	dropout_pr!   )shaper1   	unsqueezereshaper"   permuter2   r3   r    torchr/   
functionalscaled_dot_product_attentiontrainingr$   pr.   	transposesoftmaxr5   r%   )
r7   xBNCr1   r2   r3   x_clsattns
             r;   forwardClassAttn.forward8   s   ''aFF1QT7O%%a(00At~~qNNGZ[ccdeghjkmnoFF1IaDNNA4GHPPQRTUWXZ[\FF1IaDNNA4GHPPQRTUWXZ[\??HH''DDa.2mm$..** E E
 JJA{{2r**D<<B<'D>>$'DHE1%--aA6		% u%r=   )	r$   r    r2   r"   r5   r%   r1   r.   r3      FrA   rA   NN)__name__
__module____qualname____firstlineno__rJ   jitFinalbool__annotations__intfloatr-   rW   __static_attributes____classcell__r:   s   @r;   r   r      sp     		%%
 "!!// / 	/
 / / /0 r=   r   c                     ^  \ rS rSrSSSSS\R
                  \R                  \\SSS4S\	S\	S	\
S
\S\
S\
S\
S\\R                     S\\R                     S\\R                     S\\R                     S\
4U 4S jjjrS rSrU =r$ )r   Q         @FrA   -C6?Nr!   r"   	mlp_ratior#   r%   r$   	drop_path	act_layer
norm_layer
attn_block	mlp_blockinit_valuesc                   > [         TU ]  5         XS.nU	" U40 UD6U l        U
" U4UUUUS.UD6U l        US:  a  [	        U5      O[
        R                  " 5       U l        U	" U40 UD6U l        [        X-  5      nU" SUUUUS.UD6U l
        [
        R                  " U[        R                  " U40 UD6-  5      U l        [
        R                  " U[        R                  " U40 UD6-  5      U l        g Nr'   )r"   r#   r$   r%   rA   )in_featureshidden_featuresrn   drop r,   r-   norm1rV   r   r/   Identityrm   norm2rc   mlp	ParameterrJ   onesgamma_1gamma_2r7   r!   r"   rl   r#   r%   r$   rm   rn   ro   rp   rq   rr   r(   r)   r8   mlp_hidden_dimr:   s                    r;   r-   !LayerScaleBlockClassAttn.__init__T       " 	/*r*


 
	 1:B),BKKM*r*
S_- 
*	

 
 ||K%**S2GB2G$GH||K%**S2GB2G$GHr=   c           	      *   [         R                  " X!4SS9nX R                  U R                  U R	                  U R                  U5      5      -  5      -   nX R                  U R                  U R                  U R                  U5      5      -  5      -   nU$ )Nr   rE   )	rJ   catrm   r   rV   rz   r   r}   r|   )r7   rQ   rU   us       r;   rW    LayerScaleBlockClassAttn.forward}   sp    IIuja(t||dii

16N'NOOt||dhhtzz%?P6Q'QRRr=   rV   rm   r   r   r}   rz   r|   )r[   r\   r]   r^   r/   GELU	LayerNormr   r   rc   rd   ra   r   Moduler-   rW   re   rf   rg   s   @r;   r   r   Q   s      ""!!!)+*,,,*3),!%'I'I 'I 	'I
 'I 'I 'I 'I BII'I RYY'I RYY'I BII'I 'I 'IR r=   r   c                   V   ^  \ rS rSr      S
S\S\S\S\S\4
U 4S jjjrS rS	r	U =r
$ )r      r!   r"   r#   r$   r%   c                   > [         T
U ]  5         XgS.nX l        X-  n	U	S-  U l        [        R
                  " XS-  4SU0UD6U l        [        R                  " U5      U l        [        R
                  " X40 UD6U l	        [        R
                  " X"40 UD6U l
        [        R
                  " X"40 UD6U l        [        R                  " U5      U l        g )Nr'   r*   r@   r+   )r,   r-   r"   r.   r/   r0   qkvr4   r$   r5   proj_lproj_wr%   r6   s             r;   r-   TalkingHeadAttn.__init__   s     	/"#%
99S'??B?I.IIc-"-	ii	;;ii	;;I.r=   c                    UR                   u  p#nU R                  U5      R                  X#SU R                  X@R                  -  5      R	                  SSSSS5      nUS   U R
                  -  US   US   pnXgR                  SS5      -  n	U R                  U	R	                  SSSS5      5      R	                  SSSS5      n	U	R                  SS9n	U R                  U	R	                  SSSS5      5      R	                  SSSS5      n	U R                  U	5      n	X-  R                  SS5      R                  X#U5      nU R                  U5      nU R                  U5      nU$ )	Nr@   r?   r   r      rC   rD   rE   )rF   r   rH   r"   rI   r.   rO   r   rP   r   r$   r5   r%   )
r7   rQ   rR   rS   rT   r   r1   r2   r3   rV   s
             r;   rW   TalkingHeadAttn.forward   s>   ''ahhqk!!!4>>1;NOWWXY[\^_abdefa&4::%s1vs1va;;r2&&{{4<<1a34<<Q1aH|||#{{4<<1a34<<Q1aH~~d#X  A&..qQ7IIaLNN1r=   )r$   r"   r5   r%   r   r   r   r.   rY   )r[   r\   r]   r^   rc   ra   rd   r-   rW   re   rf   rg   s   @r;   r   r      s[     "!!// / 	/
 / / /: r=   r   c                     ^  \ rS rSrSSSSS\R
                  \R                  \\SSS4S\	S\	S	\
S
\S\
S\
S\
S\\R                     S\\R                     S\\R                     S\\R                     S\
4U 4S jjjrS rSrU =r$ )r      rj   FrA   rk   Nr!   r"   rl   r#   r%   r$   rm   rn   ro   rp   rq   rr   c                   > [         TU ]  5         XS.nU	" U40 UD6U l        U
" U4UUUUS.UD6U l        US:  a  [	        U5      O[
        R                  " 5       U l        U	" U40 UD6U l        [        X-  5      nU" SUUUUS.UD6U l
        [
        R                  " U[        R                  " U40 UD6-  5      U l        [
        R                  " U[        R                  " U40 UD6-  5      U l        g rt   ry   r   s                    r;   r-   LayerScaleBlock.__init__   r   r=   c           	          XR                  U R                  U R                  U R                  U5      5      -  5      -   nXR                  U R                  U R                  U R                  U5      5      -  5      -   nU$ N)rm   r   rV   rz   r   r}   r|   r7   rQ   s     r;   rW   LayerScaleBlock.forward   s]    t||dii

1.FFGGt||dhhtzz!}.EEFFr=   r   )r[   r\   r]   r^   r/   r   r   r   r   rc   rd   ra   r   r   r-   rW   re   rf   rg   s   @r;   r   r      s      ""!!!)+*,,,*9),!%'I'I 'I 	'I
 'I 'I 'I 'I BII'I RYY'I RYY'I BII'I 'I 'IR r=   r   c            7          ^  \ rS rSrSSSSSSSSS	S
SSSSS\\\\" \R                  SS9\R                  \\S\\SS	SS4S\S\S\S\S\S\S\S\S\S\S\S\S\S\S\S \\R&                     S!\\R&                     S"\\R&                     S#\\R&                     S$\\R&                     S%\\R&                     S&\\R&                     S'\S(\\R&                     S)\\R&                     S*\S+\46U 4S, jjjrS- r\R.                  R0                  S. 5       r\R.                  R0                  SCS/ j5       r\R.                  R0                  SDS0 j5       r\R.                  R0                  S1\R&                  4S2 j5       rSES\S\\   4S3 jjr     SFS4\R>                  S5\\ \\!\   4      S6\S7\S8\S9\S1\ \!\R>                     \"\R>                  \!\R>                     4   4   4S: jjr#   SGS5\ \\!\   4   S;\S<\4S= jjr$S> r%SDS?\4S@ jjr&SA r'SBr(U =r)$ )Hr            r@     token      rj   TrA   ư>)epsrk   r?   Nimg_size
patch_sizein_chansnum_classesglobal_pool	embed_dimdepthr"   rl   r#   	drop_ratepos_drop_rateproj_drop_rateattn_drop_ratedrop_path_rateblock_layersblock_layers_tokenpatch_layerro   rn   rp   rq   rr   attn_block_token_onlymlp_block_token_onlydepth_token_onlymlp_ratio_token_onlyc                 h  > [         T$U ]  5         UUS.nUS;   d   eX@l        X0l        XPl        U=U l        =U l        U l        SU l        U" SUUUUS.UD6U l	        U R                  R                  n[        U R                  S5      (       a  U R                  R                  5       OUn [        R                  " [        R                   " SSU40 UD65      U l        [        R                  " [        R                   " SUU40 UD65      U l        [        R&                  " US9U l        [+        U5       V!s/ s H  n!UPM     n"n![        R,                  " [+        U5       V!s/ s H  n!U" SUUU	U
UUU"U!   UUUUUS.UD6PM     sn!6 U l        [+        U5       V!s/ s H  n![1        UU S	U! 3S
9PM     sn!U l        [        R4                  " [+        U5       V#s/ s H  n#U" SUUUU
UUUUUS.	UD6PM     sn#5      U l        U" U40 UD6U l        [        R&                  " U5      U l        US:  a  [        R<                  " Xd40 UD6O[        R>                  " 5       U l         [C        U R$                  SS9  [C        U R"                  SS9  U RE                  U RF                  5        g s  sn!f s  sn!f s  sn!f s  sn#f )Nr'    r   avgF)r   r   r   r   
feat_ratior   )rN   )r!   r"   rl   r#   r%   r$   rm   ro   rn   rp   rq   rr   blocks.)num_chs	reductionmodule)	r!   r"   rl   r#   ro   rn   rp   rq   rr   r   {Gz?stdrx   )$r,   r-   r   r   r   num_featureshead_hidden_sizer   grad_checkpointingpatch_embednum_patcheshasattrr   r/   r~   rJ   zeros	cls_token	pos_embedr4   pos_droprange
Sequentialblocksdictfeature_info
ModuleListblocks_token_onlynorm	head_dropr0   r{   headr   apply_init_weights)%r7   r   r   r   r   r   r   r   r"   rl   r#   r   r   r   r   r   r   r   r   ro   rn   rp   rq   rr   r   r   r   r   r(   r)   r8   r   ridpr_r:   s%                                       r;   r-   Cait.__init__   s   @ 	/2222& &ENNND1DN"'& 
!	

 
 &&22-4T5E5E|-T-TD'')Zdekk!Q	&HR&HIekk![)&Rr&RS

]3',U|4|!~|4mm <&!  a '3 '
$$!f!!#'
 '
  &! " bgglamnam\]T)q7STRUWamn!# )*0, +a 1C 1
*!,*#1
 1
 +0, "- y/B/	I.?JQBIIi;;TVT_T_Ta	dnn#.dnn#.

4%%&M 5&! o0,s   4J "J%J*J/c                    [        U[        R                  5      (       am  [        UR                  SS9  [        U[        R                  5      (       a9  UR
                  b+  [        R                  R                  UR
                  S5        g g g [        U[        R                  5      (       aU  [        R                  R                  UR
                  S5        [        R                  R                  UR                  S5        g g )Nr   r   r         ?)	
isinstancer/   r0   r   weightr+   init	constant_r   )r7   ms     r;   r   Cait._init_weightsM  s    a##!((,!RYY''AFF,>!!!&&!, -?'2<<((GGaffa(GGahh, )r=   c                 
    SS1$ )Nr   r   rx   r7   s    r;   no_weight_decayCait.no_weight_decayV  s    [))r=   c                     Xl         g r   )r   )r7   enables     r;   set_grad_checkpointingCait.set_grad_checkpointingZ  s    "(r=   c                    ^  U 4S jnU$ )Nc                   > [        S Vs/ s H  oR                  U5      PM     sn5      (       a  gU R                  S5      (       a   [        U R                  S5      S   5      S-   $ U R                  S5      (       aN  [	        TR
                  5      [	        TR                  5      -
  S-   n[        U R                  S5      S   5      U-   $ U R                  S5      (       a  [	        TR
                  5      $ [        S5      $ s  snf )	N)r   r   r   r   r   .r   zblocks_token_only.znorm.inf)any
startswithrc   splitlenr   r   rd   )namen	to_offsetr7   s      r;   _matcher$Cait.group_matcher.<locals>._matcher`  s    0YZ0Y1OOA&0YZ[[++4::c?1-.22!566,s43I3I/JJQN	4::c?1-.::))4;;''U|# [s   Drx   )r7   coarser   s   `  r;   group_matcherCait.group_matcher^  s    	$ r=   returnc                     U R                   $ r   )r   r   s    r;   get_classifierCait.get_classifiero  s    yyr=   c                     Xl         Ub  US;   d   eX l        US:  a'  [        R                  " U R                  U5      U l        g [        R
                  " 5       U l        g )Nr   r   )r   r   r/   r0   r   r{   r   )r7   r   r   s      r;   reset_classifierCait.reset_classifiers  sQ    &""6666*ALqBIId//=	VXVaVaVc	r=   rQ   indicesr   
stop_early
output_fmtintermediates_onlyc           	         US;   d   S5       eUS:H  n/ n[        [        U R                  5      U5      u  pUR                  u  ppU R	                  U5      nXR
                  -   nU R                  U5      n[        R                  R                  5       (       d  U(       d  U R                  nOU R                  SU
S-    n[        U5       H  u  nnU R                  (       a0  [        R                  R                  5       (       d  [        UU5      nOU" U5      nUU	;   d  MW  UR                  U(       a  U R                  U5      OU5        M     U(       ac  U R                  R                  X45      u  nnU Vs/ s H7  nUR!                  UUUS5      R#                  SSSS	5      R%                  5       PM9     nnU(       a  U$ U R&                  R)                  UR                  S   SS5      n[        U R*                  5       H  u  nnU" UU5      nM     [        R,                  " UU4SS
9nU R                  U5      nX4$ s  snf )a  Forward features that returns intermediates.

Args:
    x: Input image tensor
    indices: Take last n blocks if int, all if None, select matching indices if sequence
    norm: Apply norm layer to all intermediates
    stop_early: Stop iterating over blocks when last desired intermediate hit
    output_fmt: Shape of intermediate feature outputs
    intermediates_only: Only return intermediate features
)NCHWNLCz)Output format must be one of NCHW or NLC.r  Nr   rD   r   r@   r?   rE   )r   r   r   rF   r   r   r   rJ   r_   is_scripting	enumerater   r   appendr   dynamic_feat_sizerH   rI   
contiguousr   expandr   r   )r7   rQ   r  r   r  r  r  rH   intermediatestake_indices	max_indexrR   r   heightwidthr   r   blkHWy
cls_tokenss                         r;   forward_intermediatesCait.forward_intermediatesz  s   & _,Y.YY,&"6s4;;7G"Q  ggfQMM!99!!##:[[F[[)a-0F'FAs&&uyy/E/E/G/GsA&FL $$TTYYq\qA ( ##55voFDAq^kl^kYZQYYq!Q3;;Aq!QGRRT^kMl   ^^**1771:r2>
 6 67FAsQ
+J 8IIz1o1-IIaL ms   7>H=
prune_norm
prune_headc                    [        [        U R                  5      U5      u  pEU R                  SUS-    U l        U(       a  [        R                  " 5       U l        U(       a,  [        R                  " 5       U l        U R                  SS5        U$ )z?Prune layers not required for specified intermediates.
        Nr   r   r   )	r   r   r   r/   r{   r   r   r   r	  )r7   r  r$  r%  r  r  s         r;   prune_intermediate_layersCait.prune_intermediate_layers  si     #7s4;;7G"Qkk.9q=1DI%']]_D"!!!R(r=   c                    U R                  U5      nXR                  -   nU R                  U5      nU R                  (       a:  [        R
                  R                  5       (       d  [        U R                  U5      nOU R                  U5      nU R                  R                  UR                  S   SS5      n[        U R                  5       H  u  p4U" X5      nM     [        R                  " X!4SS9nU R                  U5      nU$ )Nr   rD   r   rE   )r   r   r   r   rJ   r_   r  r   r   r   r  rF   r  r   r   r   )r7   rQ   r!  r   r  s        r;   forward_featuresCait.forward_features  s    QMM!""599+A+A+C+Ct{{A.AAA^^**1771:r2>
 6 67FAQ+J 8IIzo1-IIaLr=   
pre_logitsc                     U R                   (       a1  U R                   S:X  a  US S 2SS 24   R                  SS9OUS S 2S4   nU R                  U5      nU(       a  U$ U R                  U5      $ )Nr   r   rE   r   )r   meanr   r   )r7   rQ   r,  s      r;   forward_headCait.forward_head  s_    (,(8(8E(A!QR%!$qAwANN1q0DIIaL0r=   c                 J    U R                  U5      nU R                  U5      nU$ r   )r*  r/  r   s     r;   rW   Cait.forward  s'    !!!$a r=   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )TFr   )NFFr  F)r   FT)*r[   r\   r]   r^   r   r   r   r   r/   r   r   r   r   r   rc   strrd   ra   r   r   r-   r   rJ   r_   ignorer   r   r  r  r   r	  Tensorr   r   r   r"  r'  r*  r/  rW   re   rf   rg   s   @r;   r   r      sx   
   #& !!!#%$&$&$&,;2J+5*1",,D*I)+*9),!%5>47$%*-=^'^' ^' 	^'
 ^' ^' ^' ^' ^' ^' ^' ^' !^' "^' "^'  "!^'" ryy/#^'$ !%RYY%^'& bii'^'( RYY)^'* BII+^', RYY-^'. BII/^'0 1^'2 $(		?3^'4 #'ryy/5^'6 "7^'8 #(9^' ^'@- YY* * YY) ) YY   YY		  dC dhsm d 8<$$',; ||;  eCcN34;  	; 
 ;  ;  !%;  
tELL!5tELL7I)I#JJ	K; ~ ./$#	3S	>*  	"1$ 1 r=   r   c                 z    SU ;   a  U S   n 0 nU R                  5        H  u  p4XBUR                  SS5      '   M     U$ )Nmodelzmodule.r   )itemsreplace)
state_dictr8  checkpoint_no_moduler2   r3   s        r;   checkpoint_filter_fnr=    sH    *(
  "9:QYYy"56 #r=   c           	      l    UR                  SS5      n[        [        U U4[        [	        USS9S.UD6nU$ )Nout_indicesr@   getter)r?  feature_cls)pretrained_filter_fnfeature_cfg)popr   r   r=  r   )variant
pretrainedkwargsr?  r8  s        r;   _create_caitrH    sJ    **]A.K  2[hG E Lr=   c                 4    U SSS SSS[         [        SSSS	.UE$ )
Nr   )r@     rJ  r   bicubicTzpatch_embed.projr   z
apache-2.0)urlr   
input_size	pool_sizecrop_pctinterpolationfixed_input_sizer.  r   
first_conv
classifierlicenser
   )rL  rG  s     r;   _cfgrU    s5    =t)%.B(  r=   ztimm/z1https://dl.fbaipublicfiles.com/deit/XXS24_224.pth)r@   r   r   )	hf_hub_idrL  rM  z1https://dl.fbaipublicfiles.com/deit/XXS24_384.pth)rV  rL  z1https://dl.fbaipublicfiles.com/deit/XXS36_224.pthz1https://dl.fbaipublicfiles.com/deit/XXS36_384.pthz0https://dl.fbaipublicfiles.com/deit/XS24_384.pthz/https://dl.fbaipublicfiles.com/deit/S24_224.pthz/https://dl.fbaipublicfiles.com/deit/S24_384.pthz/https://dl.fbaipublicfiles.com/deit/S36_384.pthz/https://dl.fbaipublicfiles.com/deit/M36_384.pthz/https://dl.fbaipublicfiles.com/deit/M48_448.pth)r@     rW  )
zcait_xxs24_224.fb_dist_in1kzcait_xxs24_384.fb_dist_in1kzcait_xxs36_224.fb_dist_in1kzcait_xxs36_384.fb_dist_in1kzcait_xs24_384.fb_dist_in1kzcait_s24_224.fb_dist_in1kzcait_s24_384.fb_dist_in1kzcait_s36_384.fb_dist_in1kzcait_m36_384.fb_dist_in1kzcait_m48_448.fb_dist_in1kr  c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr         r   h㈵>r   r   r   r"   rr   rF  )cait_xxs24_224r   rH  rF  rG  
model_argsr8  s       r;   r]  r]  5  7    s"W[\J_j_DD^W]D^_ELr=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rY  rZ  r   r[  r\  rF  )cait_xxs24_384r^  r_  s       r;   rc  rc  <  ra  r=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rY  $   r   r[  r\  rF  )cait_xxs36_224r^  r_  s       r;   rf  rf  C  ra  r=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rY  re  r   r[  r\  rF  )cait_xxs36_384r^  r_  s       r;   rh  rh  J  ra  r=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   i   rZ     r[  r\  rF  )cait_xs24_384r^  r_  s       r;   rk  rk  Q  s7    s"W[\J^Z^4
C]V\C]^ELr=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rJ  rZ  rZ   r[  r\  rF  )cait_s24_224r^  r_  s       r;   rm  rm  X  7    s"W[\J]J]$zB\U[B\]ELr=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rJ  rZ  rZ   r[  r\  rF  )cait_s24_384r^  r_  s       r;   rp  rp  _  rn  r=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )	Nr   rJ  re  rZ   r   r\  rF  )cait_s36_384r^  r_  s       r;   rr  rr  f  rn  r=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )Nr   r   re  r   r\  rF  )cait_m36_384r^  r_  s       r;   rt  rt  m  7    s"X\]J]J]$zB\U[B\]ELr=   c           	      N    [        SSSSSS9n[        SSU 0[        U40 UD6D6nU$ )Nr   r   0   r   r\  rF  )cait_m48_448r^  r_  s       r;   rx  rx  t  ru  r=   r   r3  )r   )5__doc__	functoolsr   typingr   r   r   r   r   r	   rJ   torch.nnr/   	timm.datar   r   timm.layersr   r   r   r   r   _builderr   	_featuresr   _manipulater   r   	_registryr   r   __all__r   r   r   r   r   r   r=  rH  rU  default_cfgsr]  rc  rf  rh  rk  rm  rp  rr  rt  rx  rx   r=   r;   <module>r     sf    : :   A P P * + 3 <
a3		 3l0ryy 0f1bii 1h/bii /dv299 vr 
	 %#'? $
 $(?$ $(? $
 $(?$ #'># "&= "
 "&=" "&=" "&=" "&= "Q-& -` $   $   $   $                    r=   