+
    œ°³jP\  ã                   ó¨  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^ RIHtH	t	H
t
 ^RIHt ^RIHtHt ^RIHt ^RIHtHt ^R	IHt ]P0                  ! ]4      t]! R
R7      ] ! R R]4      4       4       t ! R R]P8                  4      t ! R R]P8                  4      t ! R R]P8                  4      t ! R R]P8                  4      t  ! R R]P8                  4      t! ! R R]P8                  4      t" ! R R]P8                  4      t# ! R R]P8                  4      t$ ! R R]P8                  4      t% ! R  R!]P8                  4      t& ! R" R#]P8                  4      t' ! R$ R%]P8                  4      t( ! R& R']P8                  4      t) ! R( R)]P8                  4      t*] ! R* R+]4      4       t+] ! R, R-]+4      4       t,]! R.R7       ! R/ R0]+4      4       t-. R1Ot.R# )2zPyTorch CvT model.N)Ú	dataclass)Únn)ÚBCEWithLogitsLossÚCrossEntropyLossÚMSELoss)Úinitialization)Ú$ImageClassifierOutputWithNoAttentionÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚlogging©Ú	CvtConfigzV
    Base class for model's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   ó<   a € ] tR t^!t o RtRtRtRtV 3R ltRt	V t
R# )ÚBaseModelOutputWithCLSTokenz—
cls_token_value (`torch.FloatTensor` of shape `(batch_size, 1, hidden_size)`):
    Classification token at the output of the last layer of the model.
Nc                ó¸   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )é   NÚlast_hidden_stateÚcls_token_value.Úhidden_states)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úe/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/cvt/modeling_cvt.pyÚ__annotate__Ú(BaseModelOutputWithCLSToken.__annotate__!   sW   ø‡ ‚ ñ ×(Ñ(¨4Õ/Ñ6ñ ñ ×&Ñ&¨Õ-Ñ4ñ ñ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ò ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r   s   @r   r   r   !   s#   ø‡ € ñð
 37ÐØ04€OØ:>€M÷ ƒ r   r   c                   ó<   a a€ ] tR t^2t oRtV 3R ltR tRtVtV ;t	# )ÚCvtEmbeddingsz
Construct the CvT embeddings.
c                ó€   <€ \         SV `  4        \        WW4VR 7      V n        \        P
                  ! V4      V n        R# ))Ú
patch_sizeÚnum_channelsÚ	embed_dimÚstrideÚpaddingN)ÚsuperÚ__init__ÚCvtConvEmbeddingsÚconvolution_embeddingsr   ÚDropoutÚdropout)Úselfr-   r.   r/   r0   r1   Údropout_rateÚ	__class__s   &&&&&&&€r   r3   ÚCvtEmbeddings.__init__7   s5   ø€ Ü‰ÑÔÜ&7Ø!È	Ðjqô'
ˆÔ#ô —z’z ,Ó/ˆŽr   c                óJ   € V P                  V4      pV P                  V4      pV# ©N©r5   r7   )r8   Úpixel_valuesÚhidden_states   && r   ÚforwardÚCvtEmbeddings.forward>   s&   € Ø×2Ñ2°<Ó@ˆØ—|‘| LÓ1ˆØÐr   r>   ©
r!   r"   r#   r$   r%   r3   rA   r'   r(   Ú__classcell__©r:   r   s   @@r   r+   r+   2   s   ù‡ € ñõ0÷ò r   r+   c                   ó<   a a€ ] tR t^Dt oRtV 3R ltR tRtVtV ;t	# )r4   z
Image to Conv Embedding.
c                ó   <€ \         SV `  4        \        V\        P                  P
                  4      '       d   TMW3pWn        \        P                  ! W#WVR 7      V n	        \        P                  ! V4      V n        R# ))Úkernel_sizer0   r1   N)r2   r3   Ú
isinstanceÚcollectionsÚabcÚIterabler-   r   ÚConv2dÚ
projectionÚ	LayerNormÚnormalization)r8   r-   r.   r/   r0   r1   r:   s   &&&&&&€r   r3   ÚCvtConvEmbeddings.__init__I   sZ   ø€ Ü‰ÑÔÜ#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø$ŒÜŸ)š) LÈÐlsÔtˆŒÜŸ\š\¨)Ó4ˆÖr   c                ó(  € V P                  V4      pVP                  w  r#rEWE,          pVP                  W#V4      P                  ^ ^^4      pV P                  '       d   V P	                  V4      pVP                  ^ ^^4      P                  W#WE4      pV# ©é    )rN   ÚshapeÚviewÚpermuterP   )r8   r?   Ú
batch_sizer.   ÚheightÚwidthÚhidden_sizes   &&     r   rA   ÚCvtConvEmbeddings.forwardP   s�   € Ø—‘ |Ó4ˆØ2>×2DÑ2DÑ/ˆ
 &Ø•nˆà#×(Ñ(¨À;ÓO×WÑWÐXYÐ[\Ð^_Ó`ˆØ××ÐØ×-Ñ-¨lÓ;ˆLà#×+Ñ+¨A¨q°!Ó4×9Ñ9¸*ÐTZÓbˆØÐr   )rP   r-   rN   rC   rE   s   @@r   r4   r4   D   s   ù‡ € ñõ5÷
ò 
r   r4   c                   ó8   a a€ ] tR t^]t oV 3R ltR tRtVtV ;t# )ÚCvtSelfAttentionConvProjectionc           
     óž   <€ \         SV `  4        \        P                  ! VVVVVR VR7      V n        \        P
                  ! V4      V n        R# )F)rH   r1   r0   ÚbiasÚgroupsN)r2   r3   r   rM   ÚconvolutionÚBatchNorm2drP   )r8   r/   rH   r1   r0   r:   s   &&&&&€r   r3   Ú'CvtSelfAttentionConvProjection.__init__^   sG   ø€ Ü‰ÑÔÜŸ9š9ØØØ#ØØØØô
ˆÔô  Ÿ^š^¨IÓ6ˆÖr   c                óJ   € V P                  V4      pV P                  V4      pV# r=   ©rb   rP   ©r8   r@   s   &&r   rA   Ú&CvtSelfAttentionConvProjection.forwardk   s(   € Ø×'Ñ'¨Ó5ˆØ×)Ñ)¨,Ó7ˆØÐr   rf   ©	r!   r"   r#   r$   r3   rA   r'   r(   rD   rE   s   @@r   r^   r^   ]   s   ù‡ € õ7÷ò r   r^   c                   ó&   a € ] tR t^qt o R tRtV tR# )Ú CvtSelfAttentionLinearProjectionc                óz   € VP                   w  r#rEWE,          pVP                  W#V4      P                  ^ ^^4      pV# rS   )rU   rV   rW   )r8   r@   rX   r.   rY   rZ   r[   s   &&     r   rA   Ú(CvtSelfAttentionLinearProjection.forwardr   sC   € Ø2>×2DÑ2DÑ/ˆ
 &Ø•nˆà#×(Ñ(¨À;ÓO×WÑWÐXYÐ[\Ð^_Ó`ˆØÐr   r    N)r!   r"   r#   r$   rA   r'   r(   r)   s   @r   rk   rk   q   s   ø‡ € ÷ð r   rk   c                   ó<   a a€ ] tR t^zt oRV 3R lltR tRtVtV ;t# )ÚCvtSelfAttentionProjectionc                ór   <€ \         SV `  4        VR 8X  d   \        WW44      V n        \	        4       V n        R# )Údw_bnN)r2   r3   r^   Úconvolution_projectionrk   Úlinear_projection)r8   r/   rH   r1   r0   Úprojection_methodr:   s   &&&&&&€r   r3   Ú#CvtSelfAttentionProjection.__init__{   s1   ø€ Ü‰ÑÔØ Ô'Ü*HÈÐahÓ*qˆDÔ'Ü!AÓ!CˆÖr   c                óJ   € V P                  V4      pV P                  V4      pV# r=   ©rr   rs   rg   s   &&r   rA   Ú"CvtSelfAttentionProjection.forward�   s(   € Ø×2Ñ2°<Ó@ˆØ×-Ñ-¨lÓ;ˆØÐr   rw   )rq   ri   rE   s   @@r   ro   ro   z   s   ù‡ € ÷D÷ò r   ro   c                   óB   a a€ ] tR t^‡t oRV 3R lltR tR tRtVtV ;t	# )ÚCvtSelfAttentionc                óÐ  <€ \         SV `  4        VR,          V n        W°n        W n        Wn        \        TTTTVR8X  d   RMTR7      V n        \        W#WWVR7      V n        \        W#WWVR7      V n	        \        P                  ! W"V	R7      V n        \        P                  ! W"V	R7      V n        \        P                  ! W"V	R7      V n        \        P                  ! V
4      V n        R# )g      à?ÚavgÚlinear)rt   )r`   Ng      à¿)r2   r3   ÚscaleÚwith_cls_tokenr/   Ú	num_headsro   Úconvolution_projection_queryÚconvolution_projection_keyÚconvolution_projection_valuer   ÚLinearÚprojection_queryÚprojection_keyÚprojection_valuer6   r7   )r8   r€   r/   rH   Ú	padding_qÚ
padding_kvÚstride_qÚ	stride_kvÚqkv_projection_methodÚqkv_biasÚattention_drop_rater   Úkwargsr:   s   &&&&&&&&&&&&,€r   r3   ÚCvtSelfAttention.__init__ˆ   sÍ   ø€ ô 	‰ÑÔØ •_ˆŒ
Ø,ÔØ"ŒØ"Œä,FØØØØØ*?À5Ô*H™hÐNcô-
ˆÔ)ô +EØ JÐMbô+
ˆÔ'ô -GØ JÐMbô-
ˆÔ)ô !#§	¢	¨)ÀXÔ NˆÔÜ Ÿiši¨	À8ÔLˆÔÜ "§	¢	¨)ÀXÔ NˆÔä—z’zÐ"5Ó6ˆŽr   c                ó¸   € VP                   w  r#pV P                  V P                  ,          pVP                  W#V P                  V4      P	                  ^ ^^^4      # rS   )rU   r/   r€   rV   rW   )r8   r@   rX   r[   Ú_Úhead_dims   &&    r   Ú"rearrange_for_multi_head_attentionÚ3CvtSelfAttention.rearrange_for_multi_head_attention±   sR   € Ø%1×%7Ñ%7Ñ"ˆ
 Ø—>‘> T§^¡^Õ3ˆà× Ñ  ¸$¿.¹.È(ÓS×[Ñ[Ð\]Ð_`ÐbcÐefÓgÐgr   c                óŽ  € V P                   '       d#   \        P                  ! V^W#,          .^4      w  rAVP                  w  rVpVP	                  ^ ^^4      P                  WWW#4      pV P                  V4      pV P                  V4      p	V P                  V4      p
V P                   '       dM   \        P                  ! XV	3^R7      p	\        P                  ! WH3^R7      p\        P                  ! WJ3^R7      p
V P                  V P                  ,          pV P                  V P                  V	4      4      p	V P                  V P                  V4      4      pV P                  V P                  V
4      4      p
\        P                   ! RW˜.4      V P"                  ,          p\        P$                  P&                  P)                  VRR7      pV P+                  V4      p\        P                   ! RWÚ.4      pVP                  w   röpVP	                  ^ ^^^4      P-                  4       P                  WVV P                  V,          4      pV# )é   ©Údimzbhlk,bhtk->bhltzbhlt,bhtv->bhlvéÿÿÿÿ)r   r   ÚsplitrU   rW   rV   r‚   r�   rƒ   Úcatr/   r€   r”   r…   r†   r‡   Úeinsumr~   r   Ú
functionalÚsoftmaxr7   Ú
contiguous)r8   r@   rY   rZ   Ú	cls_tokenrX   r[   r.   ÚkeyÚqueryÚvaluer“   Úattention_scoreÚattention_probsÚcontextr’   s   &&&&            r   rA   ÚCvtSelfAttention.forward·   sà  € Ø××ÐÜ&+§k¢k°,ÀÀFÅNÐ@SÐUVÓ&WÑ#ˆIØ0<×0BÑ0BÑ-ˆ
 à#×+Ñ+¨A¨q°!Ó4×9Ñ9¸*ÐTZÓbˆà×-Ñ-¨lÓ;ˆØ×1Ñ1°,Ó?ˆØ×1Ñ1°,Ó?ˆà××ÐÜ—I’I˜y¨%Ð0°aÔ8ˆEÜ—)’)˜YÐ,°!Ô4ˆCÜ—I’I˜yÐ0°aÔ8ˆEà—>‘> T§^¡^Õ3ˆà×7Ñ7¸×8MÑ8MÈeÓ8TÓUˆØ×5Ñ5°d×6IÑ6IÈ#Ó6NÓOˆØ×7Ñ7¸×8MÑ8MÈeÓ8TÓUˆäŸ,š,Ð'8¸5¸,ÓGÈ$Ï*É*ÕTˆÜŸ(™(×-Ñ-×5Ñ5°oÈ2Ð5ÓNˆØŸ,™, Ó7ˆä—,’,Ð0°?Ð2JÓKˆà&Ÿ}™}Ñˆˆ1˜1Ø—/‘/ ! Q¨¨1Ó-×8Ñ8Ó:×?Ñ?À
ÐY]×YgÑYgÐjrÕYrÓsˆØˆr   )r‚   r�   rƒ   r7   r/   r€   r†   r…   r‡   r~   r   ©T)
r!   r"   r#   r$   r3   r”   rA   r'   r(   rD   rE   s   @@r   rz   rz   ‡   s   ù‡ € ÷'7òRh÷ò r   rz   c                   ó<   a a€ ] tR t^Øt oRtV 3R ltR tRtVtV ;t	# )ÚCvtSelfOutputz”
The residual connection is defined in CvtLayer instead of here (as is the case with other models), due to the
layernorm applied before each block.
c                ó�   <€ \         SV `  4        \        P                  ! W4      V n        \        P
                  ! V4      V n        R # r=   )r2   r3   r   r„   Údenser6   r7   )r8   r/   Ú	drop_rater:   s   &&&€r   r3   ÚCvtSelfOutput.__init__Þ   s.   ø€ Ü‰ÑÔÜ—Y’Y˜yÓ4ˆŒ
Ü—z’z )Ó,ˆŽr   c                óJ   € V P                  V4      pV P                  V4      pV# r=   ©r­   r7   ©r8   r@   Úinput_tensors   &&&r   rA   ÚCvtSelfOutput.forwardã   s$   € Ø—z‘z ,Ó/ˆØ—|‘| LÓ1ˆØÐr   r±   rC   rE   s   @@r   r«   r«   Ø   s   ù‡ € ñõ
-÷
ò r   r«   c                   ó<   a a€ ] tR t^ét oRV 3R lltR tRtVtV ;t# )ÚCvtAttentionc                óx   <€ \         SV `  4        \        VVVVVVVVV	V
V4      V n        \	        W+4      V n        R # r=   )r2   r3   rz   Ú	attentionr«   Úoutput)r8   r€   r/   rH   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r®   r   r:   s   &&&&&&&&&&&&&€r   r3   ÚCvtAttention.__init__ê   sK   ø€ ô 	‰ÑÔÜ)ØØØØØØØØ!ØØØó
ˆŒô $ IÓ9ˆŽr   c                óL   € V P                  WV4      pV P                  WA4      pV# r=   ©r¸   r¹   )r8   r@   rY   rZ   Úself_outputÚattention_outputs   &&&&  r   rA   ÚCvtAttention.forward	  s'   € Ø—n‘n \¸5ÓAˆØŸ;™; {ÓAÐØÐr   r¼   r©   ri   rE   s   @@r   r¶   r¶   é   s   ù‡ € ÷:÷> ò  r   r¶   c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚCvtIntermediatei  c                ó®   <€ \         SV `  4        \        P                  ! V\	        W,          4      4      V n        \        P                  ! 4       V n        R # r=   )r2   r3   r   r„   Úintr­   ÚGELUÚ
activation)r8   r/   Ú	mlp_ratior:   s   &&&€r   r3   ÚCvtIntermediate.__init__  s5   ø€ Ü‰ÑÔÜ—Y’Y˜y¬#¨iÕ.CÓ*DÓEˆŒ
ÜŸ'š'›)ˆŽr   c                óJ   € V P                  V4      pV P                  V4      pV# r=   )r­   rÅ   rg   s   &&r   rA   ÚCvtIntermediate.forward  s$   € Ø—z‘z ,Ó/ˆØ—‘ |Ó4ˆØÐr   )rÅ   r­   ri   rE   s   @@r   rÁ   rÁ     s   ù‡ € õ$÷
ò r   rÁ   c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )Ú	CvtOutputi  c                ó°   <€ \         SV `  4        \        P                  ! \	        W,          4      V4      V n        \        P                  ! V4      V n        R # r=   )r2   r3   r   r„   rÃ   r­   r6   r7   )r8   r/   rÆ   r®   r:   s   &&&&€r   r3   ÚCvtOutput.__init__  s8   ø€ Ü‰ÑÔÜ—Y’Yœs 9Õ#8Ó9¸9ÓEˆŒ
Ü—z’z )Ó,ˆŽr   c                óZ   € V P                  V4      pV P                  V4      pW,           pV# r=   r±   r²   s   &&&r   rA   ÚCvtOutput.forward!  s,   € Ø—z‘z ,Ó/ˆØ—|‘| LÓ1ˆØ#Õ2ˆØÐr   r±   ri   rE   s   @@r   rË   rË     s   ù‡ € õ-÷
ò r   rË   c                   ój   a a€ ] tR tRt oRtR
V3R lV 3R llltV3R lR ltV3R lR ltR	tVt	V ;t
# )ÚCvtDropPathi)  zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   Ú	drop_probÚreturnN)Úfloat)r   r   s   "€r   r   ÚCvtDropPath.__annotate__0  s   ø€ ÷ #ñ #¡%ð #°$ñ #r   c                ó0   <€ \         SV `  4        Wn        R # r=   )r2   r3   rÓ   )r8   rÓ   r:   s   &&€r   r3   ÚCvtDropPath.__init__0  s   ø€ Ü‰ÑÔØ"Žr   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r   r   rÔ   )r   ÚTensor)r   r   s   "€r   r   rÖ   4  s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )ç        )ÚdtypeÚdevice)r—   )
rÓ   ÚtrainingrU   Úndimr   ÚrandrÝ   rÞ   ÚfloorÚdiv)r8   r   Ú	keep_probrU   Úrandom_tensors   &&   r   rA   ÚCvtDropPath.forward4  s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r   c                ó    <€ V ^8„  d   QhRS[ /# )r   rÔ   )Ústr)r   r   s   "€r   r   rÖ   =  s   ø€ ÷ %ñ %™Cñ %r   c                ó    € R V P                    2# )zp=©rÓ   )r8   s   &r   Ú
extra_reprÚCvtDropPath.extra_repr=  s   € Ø�D—N‘NÐ#Ð$Ð$r   rê   )rÜ   )r!   r"   r#   r$   r%   r3   rA   rë   r'   r(   rD   rE   s   @@r   rÑ   rÑ   )  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r   rÑ   c                   ó@   a a€ ] tR tRt oRtRV 3R lltR tRtVtV ;t	# )ÚCvtLayeriA  zZ
CvtLayer composed by attention layers, normalization and multi-layer perceptrons (mlps).
c                ó`  <€ \         SV `  4        \        VVVVVVVVV	V
VV4      V n        \	        W,4      V n        \        W,V4      V n        VR 8”  d   \        V4      M\        P                  ! 4       V n        \        P                  ! V4      V n        \        P                  ! V4      V n        R# )rÜ   N)r2   r3   r¶   r¸   rÁ   ÚintermediaterË   r¹   rÑ   r   ÚIdentityÚ	drop_pathrO   Úlayernorm_beforeÚlayernorm_after)r8   r€   r/   rH   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r®   rÆ   Údrop_path_rater   r:   s   &&&&&&&&&&&&&&&€r   r3   ÚCvtLayer.__init__F  sž   ø€ ô" 	‰ÑÔÜ%ØØØØØØØØ!ØØØØó
ˆŒô ,¨IÓAˆÔÜ 	°iÓ@ˆŒØ8FÈÔ8Lœ ^Ô4ÔRT×R]ÒR]ÓR_ˆŒÜ "§¢¨YÓ 7ˆÔÜ!Ÿ|š|¨IÓ6ˆÖr   c                ó  € V P                  V P                  V4      VV4      pTpV P                  V4      pWQ,           pV P                  V4      pV P	                  V4      pV P                  Wa4      pV P                  V4      pV# r=   )r¸   ró   rò   rô   rð   r¹   )r8   r@   rY   rZ   Úself_attention_outputr¾   Úlayer_outputs   &&&&   r   rA   ÚCvtLayer.forwardm  s�   € Ø $§¡Ø×!Ñ! ,Ó/ØØó!
Ðð
 1ÐØŸ>™>Ð*:Ó;Ðð (Õ6ˆð ×+Ñ+¨LÓ9ˆØ×(Ñ(¨Ó6ˆð —{‘{ <Ó>ˆØ—~‘~ lÓ3ˆØÐr   )r¸   rò   rð   rô   ró   r¹   r©   rC   rE   s   @@r   rî   rî   A  s   ù‡ € ñ÷%7÷Nò r   rî   c                   ó8   a a€ ] tR tRt oV 3R ltR tRtVtV ;t# )ÚCvtStageiƒ  c                óh  <€ \         SV `  4        Wn        W n        V P                  P                  V P                  ,          '       dM   \
        P                  ! \        P                  ! ^^V P                  P                  R,          4      4      V n        \        VP                  V P                  ,          VP                  V P                  ,          V P                  ^ 8X  d   VP                  M#VP                  V P                  ^,
          ,          VP                  V P                  ,          VP                  V P                  ,          VP                  V P                  ,          R7      V n        \        P"                  ! ^ VP$                  V P                  ,          VP&                  V,          RR7       Uu. uF  q3P)                  4       NK  	  pp\
        P*                  ! \-        VP&                  V P                  ,          4       Uu. uEFŒ  p\/        VP0                  V P                  ,          VP                  V P                  ,          VP2                  V P                  ,          VP4                  V P                  ,          VP6                  V P                  ,          VP8                  V P                  ,          VP:                  V P                  ,          VP<                  V P                  ,          VP>                  V P                  ,          VP@                  V P                  ,          VP                  V P                  ,          W@P                  ,          VPB                  V P                  ,          VP                  V P                  ,          R7      NEK�  	  up!  V n"        R# u upi u upi )r—   )r-   r0   r.   r/   r1   r9   Úcpu)rÞ   )r€   r/   rH   rˆ   r‰   r‹   rŠ   rŒ   r�   rŽ   r®   rõ   rÆ   r   Nrš   )#r2   r3   ÚconfigÚstager¡   r   Ú	Parameterr   Úrandnr/   r+   Úpatch_sizesÚpatch_strider.   Úpatch_paddingr®   Ú	embeddingÚlinspacerõ   ÚdepthÚitemÚ
SequentialÚrangerî   r€   Ú
kernel_qkvrˆ   r‰   r‹   rŠ   rŒ   r�   rŽ   rÆ   Úlayers)r8   rÿ   r   ÚxÚdrop_path_ratesr’   r:   s   &&&   €r   r3   ÚCvtStage.__init__„  s‰  ø€ Ü‰ÑÔØŒØŒ
Ø�;‰;× Ñ  §¡×,Ô,ÜŸ\š\¬%¯+ª+°a¸¸D¿K¹K×<QÑ<QÐRTÕ<UÓ*VÓWˆDŒNä&Ø×)Ñ)¨$¯*©*Õ5Ø×&Ñ& t§z¡zÕ2Ø04·
±
¸a´˜×,Ò,ÀV×EUÑEUÐVZ×V`ÑV`ÐcdÕVdÕEeØ×&Ñ& t§z¡zÕ2Ø×(Ñ(¨¯©Õ4Ø×)Ñ)¨$¯*©*Õ5ô
ˆŒô $Ÿnšn¨Q°×0EÑ0EÀdÇjÁjÕ0QÐSY×S_ÑS_Ð`eÕSfÐotÕuó
Ùu˜�F‰FŽHÑuð 	ð 
ô —m’mô$ ˜vŸ|™|¨D¯J©JÕ7Ô8ó#ò" 9�Aô! Ø$×.Ñ.¨t¯z©zÕ:Ø$×.Ñ.¨t¯z©zÕ:Ø &× 1Ñ 1°$·*±*Õ =Ø$×.Ñ.¨t¯z©zÕ:Ø%×0Ñ0°·±Õ<Ø$×.Ñ.¨t¯z©zÕ:Ø#Ÿ_™_¨T¯Z©ZÕ8Ø*0×*FÑ*FÀtÇzÁzÕ*RØ#Ÿ_™_¨T¯Z©ZÕ8Ø(.×(BÑ(BÀ4Ç:Á:Õ(NØ$×.Ñ.¨t¯z©zÕ:Ø#2·:±:Õ#>Ø$×.Ñ.¨t¯z©zÕ:Ø#)×#3Ñ#3°D·J±JÕ#?÷ð ñ  9ñ#ñ
ˆŽùò	
ùò
s   Æ9N*ÈFN/c                ó„  € R pV P                  V4      pVP                  w  r4rVVP                  W4WV,          4      P                  ^ ^^4      pV P                  P
                  V P                  ,          '       d7   V P
                  P                  VRR4      p\        P                  ! W!3^R7      pV P                   F  pV! WV4      pTpK  	  V P                  P
                  V P                  ,          '       d#   \        P                  ! V^WV,          .^4      w  r!VP                  ^ ^^4      P                  W4WV4      pW3# )Nr˜   rš   )r  rU   rV   rW   rÿ   r¡   r   Úexpandr   rœ   r  r›   )	r8   r@   r¡   rX   r.   rY   rZ   ÚlayerÚlayer_outputss	   &&       r   rA   ÚCvtStage.forward®  s  € Øˆ	Ø—~‘~ lÓ3ˆØ2>×2DÑ2DÑ/ˆ
 &à#×(Ñ(¨À6Å>ÓR×ZÑZÐ[\Ð^_ÐabÓcˆØ�;‰;× Ñ  §¡×,Ô,ØŸ™×-Ñ-¨j¸"¸bÓAˆIÜ Ÿ9š9 iÐ%>ÀAÔFˆLà—[”[ˆEÙ! ,¸Ó>ˆMØ(ŠLñ !ð �;‰;× Ñ  §¡×,Ô,Ü&+§k¢k°,ÀÀFÅNÐ@SÐUVÓ&WÑ#ˆIØ#×+Ñ+¨A¨q°!Ó4×9Ñ9¸*ÐTZÓbˆØÐ&Ð&r   )r¡   rÿ   r  r  r   ri   rE   s   @@r   rü   rü   ƒ  s   ù‡ € õ(
÷T'ò 'r   rü   c                   ó<   a a€ ] tR tRt oV 3R ltRR ltRtVtV ;t# )Ú
CvtEncoderiÂ  c                óø   <€ \         SV `  4        Wn        \        P                  ! . 4      V n        \        \        VP                  4      4       F'  pV P
                  P                  \        W4      4       K)  	  R # r=   )r2   r3   rÿ   r   Ú
ModuleListÚstagesr  Úlenr  Úappendrü   )r8   rÿ   Ú	stage_idxr:   s   && €r   r3   ÚCvtEncoder.__init__Ã  sR   ø€ Ü‰ÑÔØŒÜ—m’m BÓ'ˆŒÜœs 6§<¡<Ó0Ö1ˆIØ�K‰K×Ñœx¨Ó:Ö;ó 2r   c                ó$  € V'       d   RMR pTpR p\        V P                  4       F"  w  rxV! V4      w  rVV'       g   K  WE3,           pK$  	  V'       g1   \        ;QJ d    . R WVV3 4       F  NK  	  5# ! R WVV3 4       4      # \        VVVR7      # )Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir=   r    )Ú.0Úvs   & r   Ú	<genexpr>Ú%CvtEncoder.forward.<locals>.<genexpr>Õ  s   é € ÐbÑ$P˜qŸšÓ$Pùs   ‚Œ
©r   r   r   r    )Ú	enumerater  r   r   )	r8   r?   Úoutput_hidden_statesÚreturn_dictÚall_hidden_statesr@   r¡   r’   Ústage_modules	   &&&&     r   rA   ÚCvtEncoder.forwardÊ  s“   € ß"6™B¸DÐØ#ˆàˆ	Ü!*¨4¯;©;Ö!7ÑˆAÙ&2°<Ó&@Ñ#ˆLß#Ñ#Ø$5¸Õ$GÒ!ñ "8÷
 ß”5Ñb \Ð>OÑ$PÓb—5Ðb�5Ñb \Ð>OÑ$PÓbÓbÐbä*Ø*Ø%Ø+ô
ð 	
r   )rÿ   r  )FTri   rE   s   @@r   r  r  Â  s   ù‡ € õ<÷
ô 
r   r  c                   ót   a a€ ] tR tRt oRtRtR.t]P                  ! 4       V 3R l4       t	V3R lt
RtVtV ;t# )ÚCvtPreTrainedModeliÞ  Úcvtr?   rî   c                óT  <€ \         SV `  V4       \        V\        P                  \        P
                  34      '       dj   \        P                  ! VP                  RV P                  P                  R7       VP                  e#   \        P                  ! VP                  4       R# R# \        V\        4      '       di   V P                  P                  VP                  ,          '       d:   \        P                  ! VP                  RV P                  P                  R7       R# R# R# )zInitialize the weightsrÜ   )ÚmeanÚstdN)r2   Ú_init_weightsrI   r   r„   rM   ÚinitÚtrunc_normal_Úweightrÿ   Úinitializer_ranger`   Úzeros_rü   r¡   r   )r8   Úmoduler:   s   &&€r   r2  Ú CvtPreTrainedModel._init_weightså  s½   ø€ ô 	‰Ñ˜fÔ%Ü�fœrŸy™y¬"¯)©)Ð4×5Ò5Ü×Ò˜vŸ}™}°3¸D¿K¹K×<YÑ<YÕZØ�{‰{Ò&Ü—’˜FŸK™KÖ(ñ 'ä˜¤×)Ò)Ø�{‰{×$Ñ$ V§\¡\×2Ô2Ü×"Ò" 6×#3Ñ#3¸#À4Ç;Á;×C`ÑC`×añ 3ñ *r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rÿ   r   )r   r   s   "€r   r   ÚCvtPreTrainedModel.__annotate__Þ  s   ø‡ ‚ áÑò r   r    )r!   r"   r#   r$   Úbase_model_prefixÚmain_input_nameÚ_no_split_modulesr   Úno_gradr2  r&   r'   r(   rD   rE   s   @@r   r-  r-  Þ  s;   ù‡ € ð ÐØ$€OØ#˜Ðà
‡]‚]ƒ_ô	bó ð	b÷ … r   r-  c                   óV   a a€ ] tR tRt oRV 3R llt]RV3R lR ll4       tRtVtV ;t	# )ÚCvtModeliò  c                ór   <€ \         SV `  V4       Wn        \        V4      V n        V P                  4        R# )z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)r2   r3   rÿ   r  ÚencoderÚ	post_init)r8   rÿ   Úadd_pooling_layerr:   s   &&&€r   r3   ÚCvtModel.__init__ô  s-   ø€ ô
 	‰Ñ˜Ô ØŒÜ! &Ó)ˆŒØ�‰Ör   c          	      ó€   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[S[,          /# )r   r?   Nr'  r(  rÔ   )r   rÚ   Úboolr   r   )r   r   s   "€r   r   ÚCvtModel.__annotate__ÿ  sJ   ø€ ÷ 
ñ 
á—l‘l TÕ)ð
ñ # T�kð
ñ ˜D•[ð	
ñ 
Ñ,Õ	,ñ
r   c                ó@  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVf   \        R4      hV P	                  VVVR7      pV^ ,          pV'       g   V3VR,          ,           # \        VVP                  VP                  R7      # )Nz You have to specify pixel_values©r'  r(  :r—   NNr%  )rÿ   r'  r(  Ú
ValueErrorrC  r   r   r   )r8   r?   r'  r(  r�   Úencoder_outputsÚsequence_outputs   &&&&,  r   rA   ÚCvtModel.forwardþ  s¨   € ð %9Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@àŸ,™,ØØ!5Ø#ð 'ó 
ˆð
 *¨!Õ,ˆçØ#Ð%¨¸Õ(;Õ;Ð;ä*Ø-Ø+×;Ñ;Ø)×7Ñ7ô
ð 	
r   )rÿ   rC  r©   )NNN©
r!   r"   r#   r$   r3   r   rA   r'   r(   rD   rE   s   @@r   rA  rA  ò  s(   ù‡ € ÷ð ÷
ñ 
ó ÷
ð 
r   rA  z¤
    Cvt Model transformer with an image classification head on top (a linear layer on top of the final hidden state of
    the [CLS] token) e.g. for ImageNet.
    c                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚCvtForImageClassificationi  c                óž  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        \
        P                  ! VP                  R,          4      V n        VP                  ^ 8”  d3   \
        P                  ! VP                  R,          VP                  4      M\
        P                  ! 4       V n        V P                  4        R# )F)rE  Nrš   )r2   r3   Ú
num_labelsrA  r.  r   rO   r/   Ú	layernormr„   rñ   Ú
classifierrD  )r8   rÿ   r:   s   &&€r   r3   Ú"CvtForImageClassification.__init__&  s–   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ˜F°eÔ<ˆŒÜŸš f×&6Ñ&6°rÕ&:Ó;ˆŒð CI×BSÑBSÐVWÔBWŒB�IŠI�f×&Ñ& rÕ*¨F×,=Ñ,=Ô>Ô]_×]hÒ]hÓ]jð 	Œð
 	�‰Ör   c                ó¨   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[S[,          /# )r   r?   NÚlabelsr'  r(  rÔ   )r   rÚ   rH  r   r   )r   r   s   "€r   r   Ú&CvtForImageClassification.__annotate__5  sd   ø€ ÷ =sñ =sá—l‘l TÕ)ð=sñ —‘˜tÕ#ð=sñ # T�kð	=sñ
 ˜D•[ð=sñ 
Ñ5Õ	5ñ=sr   c                óÔ  € Ve   TMV P                   P                  pV P                  VVVR7      pV^ ,          pV^,          pV P                   P                  R	,          '       d   V P	                  V4      pMIVP
                  w  ršr¼VP                  WšW¼,          4      P                  ^ ^^4      pV P	                  V4      pVP                  ^R7      pV P                  V4      pRpVEeÀ   V P                   P                  fª   V P                   P                  ^8X  d   RV P                   n
        M|V P                   P                  ^8”  dQ   VP                  \        P                  8X  g    VP                  \        P                  8X  d   RV P                   n
        MRV P                   n
        V P                   P                  R8X  dU   \!        4       pV P                   P                  ^8X  d'   V! VP#                  4       VP#                  4       4      pM˜V! Wâ4      pM�V P                   P                  R8X  dH   \%        4       pV! VP                  R	V P                   P                  4      VP                  R	4      4      pM-V P                   P                  R8X  d   \'        4       pV! Wâ4      pV'       g"   V3VR,          ,           pVe   V3V,           # T# \)        WþVP*                  R7      # )
ab  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
NrK  r˜   Ú
regressionÚsingle_label_classificationÚmulti_label_classification:r   NN)ÚlossÚlogitsr   rš   )rÿ   r(  r.  r¡   rU  rU   rV   rW   r0  rV  Úproblem_typerT  rÝ   r   ÚlongrÃ   r   Úsqueezer   r   r   r   )r8   r?   rY  r'  r(  r�   ÚoutputsrN  r¡   rX   r.   rY   rZ   Úsequence_output_meanr`  r_  Úloss_fctr¹   s   &&&&&,            r   rA   Ú!CvtForImageClassification.forward4  sR  € ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆØ—(‘(ØØ!5Ø#ð ó 
ˆð " !�*ˆØ˜A•Jˆ	Ø�;‰;× Ñ  ×$Ô$Ø"Ÿn™n¨YÓ7‰Oà6E×6KÑ6KÑ3ˆJ fà-×2Ñ2°:ÈVÍ^Ó\×dÑdÐefÐhiÐklÓmˆOØ"Ÿn™n¨_Ó=ˆOà.×3Ñ3¸Ð3Ó:ÐØ—‘Ð!5Ó6ˆàˆØÓØ�{‰{×'Ñ'Ò/Ø—;‘;×)Ñ)¨QÔ.Ø/;�D—K‘KÕ,Ø—[‘[×+Ñ+¨aÔ/°V·\±\ÄUÇZÁZÔ5OÐSY×S_ÑS_Ôch×clÑclÔSlØ/L�D—K‘KÕ,à/K�D—K‘KÔ,à�{‰{×'Ñ'¨<Ô7Ü"›9�Ø—;‘;×)Ñ)¨QÔ.Ù# F§N¡NÓ$4°f·n±nÓ6FÓG‘Dá# FÓ3‘DØ—‘×)Ñ)Ð-JÔJÜ+Ó-�Ù §¡¨B°·±×0FÑ0FÓ GÈÏÉÐUWËÓY‘Ø—‘×)Ñ)Ð-IÔIÜ,Ó.�Ù Ó/�çØ�Y ¨¥Õ,ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä3¸Ð\c×\qÑ\qÔrÐrr   )rV  r.  rU  rT  )NNNNrP  rE   s   @@r   rR  rR    s,   ù‡ € õð ÷=sñ =só ÷=sð =sr   rR  )rR  rA  r-  )/r%   Úcollections.abcrJ   Údataclassesr   r   r   Útorch.nnr   r   r   Ú r   r3  Úmodeling_outputsr   r	   Úmodeling_utilsr
   Úutilsr   r   Úconfiguration_cvtr   Ú
get_loggerr!   Úloggerr   ÚModuler+   r4   r^   rk   ro   rz   r«   r¶   rÁ   rË   rÑ   rî   rü   r  r-  rA  rR  Ú__all__r    r   r   Ú<module>rt     sÂ  ðñ ã Ý !ã Ý ß AÑ Aå &ß QÝ -ß ,Ý (ð 
×	Ò	˜HÓ	%€ñ ðôð
 ô? +ó ?ó óð?ô�B—I‘Iô ô$˜Ÿ	™	ô ô2 R§Y¡Yô ô( r§y¡yô ô
 §¡ô 
ôN�r—y‘yô Nôb�B—I‘Iô ô"# �2—9‘9ô # ôL	�b—i‘iô 	ô
�—	‘	ô 
ô%�"—)‘)ô %ô0?ˆr�y‰yô ?ôD<'ˆr�y‰yô <'ô~
�—‘ô 
ð8 ôb˜ó bó ðbð& ô)
Ð!ó )
ó ð)
ñX ðôôMsÐ 2ó MsóðMsò` J‚r   