+
    œ°³jÅb  ã                   óL  € R t ^ RIt^ RIHt ^ RIt^ RIHt ^RIHt ^RI	H
t
HtHtHt ^RIHt ^RIHtHt ^RIHt ]P*                  ! ]4      t]! R	R
7      ] ! R R]4      4       4       t ! R R]P2                  4      t ! R R]P2                  4      t ! R R]P2                  4      t ! R R]P2                  4      t ! R R]P2                  4      t ! R R]P2                  4      t ! R R]P2                  4      t  ! R R]P2                  4      t! ! R R]P2                  4      t" ! R R ]P2                  4      t# ! R! R"]P2                  4      t$] ! R# R$]4      4       t%] ! R% R&]%4      4       t&]! R'R
7       ! R( R)]%4      4       t']! R*R
7       ! R+ R,]%4      4       t(. R-Ot)R# ).zPyTorch LeViT model.N)Ú	dataclass)Únn)Úinitialization)ÚBaseModelOutputWithNoAttentionÚ(BaseModelOutputWithPoolingAndNoAttentionÚ$ImageClassifierOutputWithNoAttentionÚModelOutput)ÚPreTrainedModel)Úauto_docstringÚlogging©ÚLevitConfigzD
    Output type of [`LevitForImageClassificationWithTeacher`].
    )Úcustom_introc                   ó@   a € ] tR t^%t o RtRtRtRtRtV 3R lt	Rt
V tR# )Ú,LevitForImageClassificationWithTeacherOutputaJ  
logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels)`):
    Prediction scores as the average of the `cls_logits` and `distillation_logits`.
cls_logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels)`):
    Prediction scores of the classification head (i.e. the linear layer on top of the final hidden state of the
    class token).
distillation_logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels)`):
    Prediction scores of the distillation head (i.e. the linear layer on top of the final hidden state of the
    distillation token).
Nc                óâ   <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  ,          R,          ;R&   # )é   NÚlogitsÚ
cls_logitsÚdistillation_logitsÚhidden_states)ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úi/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/levit/modeling_levit.pyÚ__annotate__Ú9LevitForImageClassificationWithTeacherOutput.__annotate__%   sj   ø‡ ‚ ñ$ ×Ñ Õ$Ñ+ñ% ñ& ×!Ñ! DÕ(Ñ/ñ' ñ( ×*Ñ*¨TÕ1Ñ8ñ) ñ* ™×*Ñ*Õ+¨dÕ2Ñ9ò+ ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r   %   s(   ø‡ € ñ	ð (,€FØ+/€JØ48ÐØ59€M÷+ ƒ r   r   c                   ó@   a a€ ] tR t^=t oRtRV 3R lltR tRtVtV ;t	# )ÚLevitConvEmbeddingszS
LeViT Conv Embeddings with Batch Norm, used in the initial patch embedding layer.
c	                óš   <€ \         S	V `  4        \        P                  ! WW4WVVR R7      V n        \        P
                  ! V4      V n        R# )F)ÚdilationÚgroupsÚbiasN)ÚsuperÚ__init__r   ÚConv2dÚconvolutionÚBatchNorm2dÚ
batch_norm)
ÚselfÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingr,   r-   Úbn_weight_initÚ	__class__s
   &&&&&&&&&€r   r0   ÚLevitConvEmbeddings.__init__B   s@   ø€ ô 	‰ÑÔÜŸ9š9Ø {¸GÐ_eÐlqô
ˆÔô Ÿ.š.¨Ó6ˆŽr   c                óJ   € V P                  V4      pV P                  V4      pV# ©N)r2   r4   )r5   Ú
embeddingss   &&r   ÚforwardÚLevitConvEmbeddings.forwardK   s&   € Ø×%Ñ% jÓ1ˆ
Ø—_‘_ ZÓ0ˆ
ØÐr   )r4   r2   )é   rC   rC   ©
r!   r"   r#   r$   r%   r0   rA   r'   r(   Ú__classcell__©r<   r   s   @@r   r*   r*   =   s   ù‡ € ñ÷7÷ò r   r*   c                   ó<   a a€ ] tR t^Qt oRtV 3R ltR tRtVtV ;t	# )ÚLevitPatchEmbeddingsz�
LeViT patch embeddings, for final embeddings to be passed to transformer blocks. It consists of multiple
`LevitConvEmbeddings`.
c                óÈ  <€ \         SV `  4        \        VP                  VP                  ^ ,          ^,          VP
                  VP                  VP                  4      V n        \        P                  ! 4       V n        \        VP                  ^ ,          ^,          VP                  ^ ,          ^,          VP
                  VP                  VP                  4      V n        \        P                  ! 4       V n        \        VP                  ^ ,          ^,          VP                  ^ ,          ^,          VP
                  VP                  VP                  4      V n        \        P                  ! 4       V n        \        VP                  ^ ,          ^,          VP                  ^ ,          VP
                  VP                  VP                  4      V n        VP                  V n        R# )é    N)r/   r0   r*   Únum_channelsÚhidden_sizesr8   r9   r:   Úembedding_layer_1r   Ú	HardswishÚactivation_layer_1Úembedding_layer_2Úactivation_layer_2Úembedding_layer_3Úactivation_layer_3Úembedding_layer_4©r5   Úconfigr<   s   &&€r   r0   ÚLevitPatchEmbeddings.__init__W   so  ø€ Ü‰ÑÔÜ!4Ø×Ñ ×!4Ñ!4°QÕ!7¸1Õ!<¸f×>PÑ>PÐRX×R_ÑR_Ðag×aoÑaoó"
ˆÔô #%§,¢,£.ˆÔä!4Ø×Ñ Õ" aÕ'¨×)<Ñ)<¸QÕ)?À1Õ)DÀf×FXÑFXÐZ`×ZgÑZgÐio×iwÑiwó"
ˆÔô #%§,¢,£.ˆÔä!4Ø×Ñ Õ" aÕ'¨×)<Ñ)<¸QÕ)?À1Õ)DÀf×FXÑFXÐZ`×ZgÑZgÐio×iwÑiwó"
ˆÔô #%§,¢,£.ˆÔä!4Ø×Ñ Õ" aÕ'¨×)<Ñ)<¸QÕ)?À×ASÑASÐU[×UbÑUbÐdj×drÑdró"
ˆÔð #×/Ñ/ˆÖr   c                óŽ  € VP                   ^,          pW P                  8w  d   \        R4      hV P                  V4      pV P	                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pVP                  ^4      P                  ^^4      # )rC   zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)ÚshaperK   Ú
ValueErrorrM   rO   rP   rQ   rR   rS   rT   ÚflattenÚ	transpose)r5   Úpixel_valuesrK   r@   s   &&  r   rA   ÚLevitPatchEmbeddings.forwardm   s¾   € Ø#×)Ñ)¨!Õ,ˆØ×,Ñ,Ô,ÜØwóð ð ×+Ñ+¨LÓ9ˆ
Ø×,Ñ,¨ZÓ8ˆ
Ø×+Ñ+¨JÓ7ˆ
Ø×,Ñ,¨ZÓ8ˆ
Ø×+Ñ+¨JÓ7ˆ
Ø×,Ñ,¨ZÓ8ˆ
Ø×+Ñ+¨JÓ7ˆ
Ø×!Ñ! !Ó$×.Ñ.¨q°!Ó4Ð4r   )rO   rQ   rS   rM   rP   rR   rT   rK   rD   rF   s   @@r   rH   rH   Q   s   ù‡ € ñõ
0÷,5ò 5r   rH   c                   ó<   a a€ ] tR t^}t oRV 3R lltR tRtVtV ;t# )ÚMLPLayerWithBNc                ó”   <€ \         SV `  4        \        P                  ! WR R7      V n        \        P
                  ! V4      V n        R# )F)Úin_featuresÚout_featuresr.   N)r/   r0   r   ÚLinearÚlinearÚBatchNorm1dr4   )r5   Ú	input_dimÚ
output_dimr;   r<   s   &&&&€r   r0   ÚMLPLayerWithBN.__init__~   s1   ø€ Ü‰ÑÔÜ—i’i¨IÐUZÔ[ˆŒÜŸ.š.¨Ó4ˆŽr   c                óˆ   € V P                  V4      pV P                  VP                  ^ ^4      4      P                  V4      pV# )rJ   )re   r4   r[   Ú
reshape_as©r5   Úhidden_states   &&r   rA   ÚMLPLayerWithBN.forwardƒ   s<   € Ø—{‘{ <Ó0ˆØ—‘ |×';Ñ';¸A¸qÓ'AÓB×MÑMÈlÓ[ˆØÐr   ©r4   re   )rC   ©	r!   r"   r#   r$   r0   rA   r'   r(   rE   rF   s   @@r   r`   r`   }   s   ù‡ € ÷5÷
ò r   r`   c                   ó8   a a€ ] tR t^‰t oV 3R ltR tRtVtV ;t# )ÚLevitSubsamplec                ó<   <€ \         SV `  4        Wn        W n        R # r?   )r/   r0   r9   Ú
resolution)r5   r9   rt   r<   s   &&&€r   r0   ÚLevitSubsample.__init__Š   s   ø€ Ü‰ÑÔØŒØ$Žr   c                óÜ   € VP                   w  r#pVP                  W P                  V P                  V4      R RRV P                  1RRV P                  13,          P	                  VRV4      pV# )ºNNNNéÿÿÿÿ)rY   Úviewrt   r9   Úreshape)r5   rm   Ú
batch_sizeÚ_Úchannelss   &&   r   rA   ÚLevitSubsample.forward�   sg   € Ø".×"4Ñ"4Ñˆ
�xØ#×(Ñ(¨·_±_ÀdÇoÁoÐW_Ó`Ø‰~�$—+‘+ˆ~™~ $§+¡+˜~Ð-õ
ç
‰'�*˜b (Ó
+ð 	ð Ðr   )rt   r9   rp   rF   s   @@r   rr   rr   ‰   s   ù‡ € õ%÷
ò r   rr   c                   óv   a a€ ] tR t^—t oV 3R lt]P                  ! 4       RV 3R ll4       tR tR t	Rt
VtV ;t# )ÚLevitAttentionc                ó   <€ \         SV `  4        W0n        VR,          V n        W n        W@n        WB,          V,          W#,          ^,          ,           V n        WB,          V,          V n        \        WP                  4      V n	        \        P                  ! 4       V n        \        V P                  V^ R7      V n        \        \        P                   ! \#        V4      \#        V4      4      4      p\%        V4      pWpn        / . r˜V Fv  p
V Fm  p\)        V
^ ,          V^ ,          ,
          4      \)        V
^,          V^,          ,
          4      3pWÈ9  d   \%        V4      WŒ&   V	P+                  WŒ,          4       Ko  	  Kx  	  W�n        / V n        \0        P                  P3                  \0        P4                  ! V\%        V4      4      4      V n        \        P8                  ! \0        P:                  ! V	4      P=                  Ww4      RR7      V n        R# )ç      à?)r;   F©Ú
persistentNç      à¿) r/   r0   Únum_attention_headsÚscaleÚkey_dimÚattention_ratioÚout_dim_keys_valuesÚout_dim_projectionr`   Úqueries_keys_valuesr   rN   Ú
activationÚ
projectionÚlistÚ	itertoolsÚproductÚrangeÚlenÚ
len_pointsÚabsÚappendÚindicesÚattention_bias_cacher   Ú	ParameterÚzerosÚattention_biasesÚBufferÚ
LongTensorry   Úattention_bias_idxs)r5   rL   rˆ   r†   r‰   rt   Úpointsr”   Úattention_offsetsr—   Úp1Úp2Úoffsetr<   s   &&&&&&       €r   r0   ÚLevitAttention.__init__˜   s�  ø€ Ü‰ÑÔØ#6Ô Ø˜d•]ˆŒ
ØŒØ.ÔØ#2Õ#<Ð?RÕ#RÐU\ÕUrÐuvÕUvÕ#vˆÔ Ø"1Õ";Ð>QÕ"QˆÔä#1°,×@XÑ@XÓ#YˆÔ ÜŸ,š,›.ˆŒÜ(¨×)@Ñ)@À,Ð_`ÔaˆŒä”i×'Ò'¬¨jÓ(9¼5ÀÓ;LÓMÓNˆÜ˜“[ˆ
Ø$ŒØ%'¨˜7ÛˆBÛ�Ü˜b �e b¨¥e�mÓ,¬c°"°Qµ%¸"¸Q½%µ-Ó.@ÐA�ØÔ2Ü03Ð4EÓ0FÐ%Ñ-Ø—‘Ð0Õ8Ö9ó	 ñ ð Œà$&ˆÔ!Ü %§¡× 2Ñ 2´5·;²;Ð?RÔTWÐXiÓTjÓ3kÓ lˆÔÜ#%§9¢9¬U×-=Ò-=¸gÓ-F×-KÑ-KÈJÓ-cÐpuÔ#vˆÖ r   c                óp   <€ \         SV `  V4       V'       d   V P                  '       d
   / V n        R # R # R # r?   ©r/   Útrainr˜   ©r5   Úmoder<   s   &&€r   r§   ÚLevitAttention.trainµ   ó,   ø€ ä‰‰�dÔß�D×-×-Ð-Ø(*ˆDÖ%ñ .‰4r   c                ó  € V P                   '       d    V P                  R V P                  3,          # \        V4      pW P                  9  d-   V P                  R V P                  3,          V P                  V&   V P                  V,          # ©rw   ©Útrainingr›   rž   Ústrr˜   ©r5   ÚdeviceÚ
device_keys   && r   Úget_attention_biasesÚ#LevitAttention.get_attention_biases»   ót   € Ø�=�=ˆ=Ø×(Ñ(¨¨D×,DÑ,DÐ)DÕEÐEä˜V›ˆJØ×!:Ñ!:Ô:Ø8<×8MÑ8MÈaÐQU×QiÑQiÐNiÕ8j�×)Ñ)¨*Ñ5Ø×,Ñ,¨ZÕ8Ð8r   c                óÞ  € VP                   w  r#pV P                  V4      pVP                  W#V P                  R4      P	                  V P
                  V P
                  V P                  V P
                  ,          .^R7      w  rgpVP                  ^ ^^^4      pVP                  ^ ^^^4      pVP                  ^ ^^^4      pWgP                  RR4      ,          V P                  ,          V P                  VP                  4      ,           p	V	P                  RR7      p	W˜,          P                  ^^4      P                  W#V P                  4      pV P                  V P!                  V4      4      pV# ©rC   ©Údimrx   éþÿÿÿ)rY   rŒ   ry   r†   Úsplitrˆ   r‰   Úpermuter\   r‡   r´   r²   Úsoftmaxrz   r‹   rŽ   r�   )
r5   rm   r{   Ú
seq_lengthr|   rŒ   ÚqueryÚkeyÚvalueÚ	attentions
   &&        r   rA   ÚLevitAttention.forwardÄ   sB  € Ø$0×$6Ñ$6Ñ!ˆ
 Ø"×6Ñ6°|ÓDÐØ/×4Ñ4°ZÈT×MeÑMeÐgiÓj×pÑpØ�\‰\˜4Ÿ<™<¨×)=Ñ)=ÀÇÁÕ)LÐMÐSTð qó 
Ñˆ�Eð —‘˜a  A qÓ)ˆØ�k‰k˜!˜Q  1Ó%ˆØ—‘˜a  A qÓ)ˆàŸM™M¨"¨bÓ1Õ1°D·J±JÕ>À×AZÑAZÐ[g×[nÑ[nÓAoÕoˆ	Ø×%Ñ%¨"Ð%Ó-ˆ	Ø!Õ)×4Ñ4°Q¸Ó:×BÑBÀ:Ð[_×[rÑ[rÓsˆØ—‘ t§¡°|Ó'DÓEˆØÐr   )r�   r˜   rž   r›   r‰   r—   rˆ   r”   r†   rŠ   r‹   rŽ   rŒ   r‡   ©T©r!   r"   r#   r$   r0   r   Úno_gradr§   r´   rA   r'   r(   rE   rF   s   @@r   r€   r€   —   s4   ù‡ € õwð: ‡]‚]ƒ_ö+ó ð+ò
9÷ò r   r€   c                   óv   a a€ ] tR t^Õt oV 3R lt]P                  ! 4       RV 3R ll4       tR tR t	Rt
VtV ;t# )ÚLevitAttentionSubsamplec	                óf  <€ \         SV `  4        W@n        VR,          V n        W0n        WPn        WS,          V,          W4,          ,           V n        WS,          V,          V n        W€n        \        WP                  4      V n
        \        Wg4      V n        \        WV,          4      V n        \        P                  ! 4       V n        \        V P                  V4      V n        / V n        \'        \(        P*                  ! \-        V4      \-        V4      4      4      p	\'        \(        P*                  ! \-        V4      \-        V4      4      4      p
\/        V	4      \/        V
4      rËWÀn        W°n        / . ríV
 F³  pV	 Fª  p^p\5        V^ ,          V,          V^ ,          ,
          V^,
          ^,          ,           4      \5        V^,          V,          V^,          ,
          V^,
          ^,          ,           4      3pVV9  d   \/        V4      VV&   VP7                  VV,          4       K¬  	  Kµ  	  Wàn        \:        P                  P=                  \:        P>                  ! V\/        V4      4      4      V n         \        PB                  ! \:        PD                  ! V4      PG                  WË4      RR7      V n$        R# )r‚   Frƒ   Nr…   )%r/   r0   r†   r‡   rˆ   r‰   rŠ   r‹   Úresolution_outr`   Úkeys_valuesrr   Úqueries_subsampleÚqueriesr   rN   r�   rŽ   r˜   r�   r�   r‘   r’   r“   Úlen_points_r”   r•   r–   r—   r   r™   rš   r›   rœ   r�   ry   rž   )r5   rg   rh   rˆ   r†   r‰   r9   Úresolution_inrË   rŸ   Úpoints_r”   rÏ   r    r—   r¡   r¢   Úsizer£   r<   s   &&&&&&&&&          €r   r0   Ú LevitAttentionSubsample.__init__Ö   s  ø€ ô 	‰ÑÔØ#6Ô Ø˜d•]ˆŒ
ØŒØ.ÔØ#2Õ#<Ð?RÕ#RÐU\ÕUrÕ#rˆÔ Ø"1Õ";Ð>QÕ"QˆÔØ,Ôä)¨)×5MÑ5MÓNˆÔÜ!/°Ó!FˆÔÜ% iÐ;NÕ1NÓOˆŒÜŸ,š,›.ˆŒÜ(¨×)@Ñ)@À*ÓMˆŒà$&ˆÔ!ä”i×'Ò'¬¨mÓ(<¼eÀMÓ>RÓSÓTˆÜ”y×(Ò(¬¨~Ó)>ÄÀnÓ@UÓVÓWˆÜ"% f£+¬s°7«|�KØ&ÔØ$ŒØ%'¨˜7ÛˆBÛ�Ø�Ü˜b �e f�n¨r°!­uÕ4¸¸q½ÀAµ~ÕEÓFÌÈBÈqÍEÐTZÍNÐ]_Ð`aÕ]bÕLbÐfjÐmnÕfnÐrsÕesÕLsÓHtÐu�ØÐ!2Ô2Ü03Ð4EÓ0FÐ% fÑ-Ø—‘Ð0°Õ8Ö9ó ñ ð Œä %§¡× 2Ñ 2´5·;²;Ð?RÔTWÐXiÓTjÓ3kÓ lˆÔÜ#%§9¢9¬U×-=Ò-=¸gÓ-F×-KÑ-KÈKÓ-dÐqvÔ#wˆÖ r   c                óp   <€ \         SV `  V4       V'       d   V P                  '       d
   / V n        R # R # R # r?   r¦   r¨   s   &&€r   r§   ÚLevitAttentionSubsample.train  r«   r   c                ó  € V P                   '       d    V P                  R V P                  3,          # \        V4      pW P                  9  d-   V P                  R V P                  3,          V P                  V&   V P                  V,          # r­   r®   r±   s   && r   r´   Ú,LevitAttentionSubsample.get_attention_biases
  r¶   r   c                óp  € VP                   w  r#pV P                  V4      P                  W#V P                  R4      P	                  V P
                  V P                  V P
                  ,          .^R7      w  rVVP                  ^ ^^^4      pVP                  ^ ^^^4      pV P                  V P                  V4      4      pVP                  W P                  ^,          V P                  V P
                  4      P                  ^ ^^^4      pWuP                  RR4      ,          V P                  ,          V P                  VP                  4      ,           pVP                  RR7      pW†,          P                  ^^4      P!                  VRV P"                  4      pV P%                  V P'                  V4      4      pV# r¸   )rY   rÌ   ry   r†   r¼   rˆ   r‰   r½   rÎ   rÍ   rË   r\   r‡   r´   r²   r¾   rz   r‹   rŽ   r�   )	r5   rm   r{   r¿   r|   rÁ   rÂ   rÀ   rÃ   s	   &&       r   rA   ÚLevitAttentionSubsample.forward  sr  € Ø$0×$6Ñ$6Ñ!ˆ
 à×Ñ˜\Ó*ß‰T�*¨$×*BÑ*BÀBÓGß‰U�D—L‘L $×"6Ñ"6¸¿¹Õ"EÐFÈAˆUÓNñ 	ˆð
 �k‰k˜!˜Q  1Ó%ˆØ—‘˜a  A qÓ)ˆà—‘˜T×3Ñ3°LÓAÓBˆØ—
‘
˜:×':Ñ':¸AÕ'=¸t×?WÑ?WÐY]×YeÑYeÓf×nÑnØˆq�!�Qó
ˆð ŸM™M¨"¨bÓ1Õ1°D·J±JÕ>À×AZÑAZÐ[g×[nÑ[nÓAoÕoˆ	Ø×%Ñ%¨"Ð%Ó-ˆ	Ø!Õ)×4Ñ4°Q¸Ó:×BÑBÀ:ÈrÐSW×SjÑSjÓkˆØ—‘ t§¡°|Ó'DÓEˆØÐr   )r�   r˜   rž   r›   r‰   r—   rˆ   rÌ   r”   rÏ   r†   rŠ   r‹   rŽ   rÎ   rÍ   rË   r‡   rÅ   rÆ   rF   s   @@r   rÉ   rÉ   Õ   s5   ù‡ € õ,xð\ ‡]‚]ƒ_ö+ó ð+ò
9÷ò r   rÉ   c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚLevitMLPLayeri)  z=
MLP Layer with `2X` expansion in contrast to ViT with `4X`.
c                ó˜   <€ \         SV `  4        \        W4      V n        \        P
                  ! 4       V n        \        W!4      V n        R # r?   )r/   r0   r`   Ú	linear_upr   rN   r�   Úlinear_down)r5   rg   Ú
hidden_dimr<   s   &&&€r   r0   ÚLevitMLPLayer.__init__.  s4   ø€ Ü‰ÑÔÜ'¨	Ó>ˆŒÜŸ,š,›.ˆŒÜ)¨*Ó@ˆÖr   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r?   )rÝ   r�   rÞ   rl   s   &&r   rA   ÚLevitMLPLayer.forward4  s4   € Ø—~‘~ lÓ3ˆØ—‘ |Ó4ˆØ×'Ñ'¨Ó5ˆØÐr   )r�   rÞ   rÝ   rD   rF   s   @@r   rÛ   rÛ   )  s   ù‡ € ñõA÷ò r   rÛ   c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚLevitResidualLayeri;  z
Residual Block for LeViT
c                ó<   <€ \         SV `  4        Wn        W n        R # r?   )r/   r0   ÚmoduleÚ	drop_rate)r5   ræ   rç   r<   s   &&&€r   r0   ÚLevitResidualLayer.__init__@  s   ø€ Ü‰ÑÔØŒØ"Žr   c                ó²  € V P                   '       d®   V P                  ^ 8”  d�   \        P                  ! VP	                  ^ 4      ^^VP
                  R7      pVP                  V P                  4      P                  ^V P                  ,
          4      P                  4       pWP                  V4      V,          ,           pV# WP                  V4      ,           pV# )rJ   )r²   )
r¯   rç   r   ÚrandrÒ   r²   Úge_ÚdivÚdetachræ   )r5   rm   Úrnds   && r   rA   ÚLevitResidualLayer.forwardE  s�   € Ø�=�=ˆ=˜TŸ^™^¨aÔ/Ü—*’*˜\×.Ñ.¨qÓ1°1°aÀ×@SÑ@SÔTˆCØ—'‘'˜$Ÿ.™.Ó)×-Ñ-¨a°$·.±.Õ.@ÓA×HÑHÓJˆCØ'¯+©+°lÓ*CÀcÕ*IÕIˆLØÐà'¯+©+°lÓ*CÕCˆLØÐr   )rç   ræ   rD   rF   s   @@r   rä   rä   ;  s   ù‡ € ñõ#÷
 ò  r   rä   c                   óB   a a€ ] tR tRt oRtV 3R ltR tR tRtVt	V ;t
# )Ú
LevitStageiP  zH
LeViT Stage consisting of `LevitMLPLayer` and `LevitAttention` layers.
c                ó¬  <€ \         SV `  4        . V n        Wn        W n        \        V4       Fš  pV P                  P                  \        \        W4WgV
4      V P                  P                  4      4       V^ 8”  g   KP  W8,          pV P                  P                  \        \        W<4      V P                  P                  4      4       Kœ  	  V	^ ,          R8X  EdU   V P                  ^,
          V	^,          ,          ^,           V n        V P                  P                  \        V P                  P                  W"^,            RV	^,          RV	^,          RV	^,          RV	^,          RV
RV P                  / 4       V P                  V n        V	^,          ^ 8”  d˜   V P                  P                  V^,           ,          V	^,          ,          pV P                  P                  \        \        V P                  P                  V^,           ,          V4      V P                  P                  4      4       \        P                  ! V P                  4      V n        R# )	rJ   Ú	Subsamplerˆ   r†   r‰   r9   rÐ   rË   N)r/   r0   ÚlayersrV   rÐ   r’   r–   rä   r€   Údrop_path_raterÛ   rË   rÉ   rL   r   Ú
ModuleList)r5   rV   ÚidxrL   rˆ   Údepthsr†   r‰   Ú	mlp_ratioÚdown_opsrÐ   r|   rß   r<   s   &&&&&&&&&&&  €r   r0   ÚLevitStage.__init__U  së  ø€ ô 	‰ÑÔØˆŒØŒØ*Ôä�v–ˆAØ�K‰K×ÑÜ"Ü" <Ð:MÐ`mÓnØ—K‘K×.Ñ.óôð ˜1Ž}Ø)Õ5�
Ø—‘×"Ñ"Ü&¤}°\Ó'NÐPT×P[ÑP[×PjÑPjÓköñ ð �A�;˜+Õ%Ø#'×#5Ñ#5¸Õ#9¸hÀq½kÕ"IÈAÕ"MˆDÔØ�K‰K×ÑÜ'Ø—[‘[×-Ñ-¨c¸!µGÐ<ðà$ Q�Kðð )1°­ðð %-¨Q¥Kð	ð
 $ A�;ðð #0ðð $(×#6Ñ#6ñô
ð "&×!4Ñ!4ˆDÔØ˜�{˜QŒØ!Ÿ[™[×5Ñ5°c¸AµgÕ>ÀÈ!ÅÕL�
Ø—‘×"Ñ"Ü&Ü% d§k¡k×&>Ñ&>¸sÀQ½wÕ&GÈÓTÐVZ×VaÑVa×VpÑVpóôô —m’m D§K¡KÓ0ˆŽr   c                ó   € V P                   # r?   )rÐ   )r5   s   &r   Úget_resolutionÚLevitStage.get_resolutionŒ  s   € Ø×!Ñ!Ð!r   c                ó<   € V P                    F  pV! V4      pK  	  V# r?   )rô   )r5   rm   Úlayers   && r   rA   ÚLevitStage.forward�  s    € Ø—[”[ˆEÙ  Ó.ŠLñ !àÐr   )rV   rô   rÐ   rË   )r!   r"   r#   r$   r%   r0   rý   rA   r'   r(   rE   rF   s   @@r   rñ   rñ   P  s   ù‡ € ñõ51òn"÷ò r   rñ   c                   ó@   a a€ ] tR tRt oRtV 3R ltRR ltRtVtV ;t	# )ÚLevitEncoderi•  z;
LeViT Encoder consisting of multiple `LevitStage` stages.
c                óì  <€ \         SV `  4        Wn        V P                  P                  V P                  P                  ,          p. V n        V P                  P                  P                  R .4       \        \        VP                  4      4       F¹  p\        VVVP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                  V,          VP                   V,          VP                  V,          V4
      pVP#                  4       pV P
                  P                  V4       K»  	  \$        P&                  ! V P
                  4      V n        R# )Ú N)r/   r0   rV   Ú
image_sizeÚ
patch_sizeÚstagesrú   r–   r’   r“   rø   rñ   rL   rˆ   r†   r‰   rù   rý   r   rö   )r5   rV   rt   Ú	stage_idxÚstager<   s   &&   €r   r0   ÚLevitEncoder.__init__š  s  ø€ Ü‰ÑÔØŒØ—[‘[×+Ñ+¨t¯{©{×/EÑ/EÕEˆ
ØˆŒØ�‰×Ñ×#Ñ# R DÔ)äœs 6§=¡=Ó1Ö2ˆIÜØØØ×#Ñ# IÕ.Ø—‘˜yÕ)Ø—‘˜iÕ(Ø×*Ñ*¨9Õ5Ø×&Ñ& yÕ1Ø× Ñ  Õ+Ø—‘ 	Õ*ØóˆEð ×-Ñ-Ó/ˆJØ�K‰K×Ñ˜uÖ%ñ 3ô  —m’m D§K¡KÓ0ˆŽr   c                ó  € V'       d   RMR pV P                    F  pV'       d
   WA3,           pV! V4      pK  	  V'       d
   WA3,           pV'       g/   \        ;QJ d    . R W3 4       F  NK  	  5# ! R W3 4       4      # \        WR7      # )Nc              3   ó0   "  € T F  qf   K  Vx € K  	  R # 5ir?   r    )Ú.0Úvs   & r   Ú	<genexpr>Ú'LevitEncoder.forward.<locals>.<genexpr>¾  s   é € ÐWÑ$E˜qŸšÓ$Eùs   ‚Œ
)Úlast_hidden_stater   r    )r  r   r   )r5   rm   Úoutput_hidden_statesÚreturn_dictÚall_hidden_statesr
  s   &&&&  r   rA   ÚLevitEncoder.forward³  sx   € ß"6™B¸DÐà—[”[ˆEß#Ø$5¸Õ$GÐ!Ù  Ó.ŠLñ !÷
  Ø 1°OÕ CÐßß”5ÑW \Ñ$EÓW—5ÐW�5ÑW \Ñ$EÓWÓWÐWä-ÀÔnÐnr   )rV   r  )FTrD   rF   s   @@r   r  r  •  s   ù‡ € ñõ1÷2oô or   r  c                   ó<   a a€ ] tR tRt oRtV 3R ltR tRtVtV ;t	# )ÚLevitClassificationLayeriÃ  z
LeViT Classification Layer
c                ó�   <€ \         SV `  4        \        P                  ! V4      V n        \        P
                  ! W4      V n        R # r?   )r/   r0   r   rf   r4   rd   re   )r5   rg   rh   r<   s   &&&€r   r0   Ú!LevitClassificationLayer.__init__È  s.   ø€ Ü‰ÑÔÜŸ.š.¨Ó3ˆŒÜ—i’i 	Ó6ˆŽr   c                óJ   € V P                  V4      pV P                  V4      pV# r?   ro   )r5   rm   r   s   && r   rA   Ú LevitClassificationLayer.forwardÍ  s#   € Ø—‘ |Ó4ˆØ—‘˜\Ó*ˆØˆr   ro   rD   rF   s   @@r   r  r  Ã  s   ù‡ € ñõ7÷
ò r   r  c                   óP   a a€ ] tR tRt oRtRtRtR.tV 3R ltV3R lt	Rt
VtV ;t# )	ÚLevitPreTrainedModeliÓ  Úlevitr]   rä   c                ó  <€ \         SV `  V4       \        V\        4      '       df   \        P
                  ! VP                  \        P                  ! VP                  4      P                  VP                  VP                  4      4       R # \        V\        4      '       df   \        P
                  ! VP                  \        P                  ! VP                  4      P                  VP                  VP                  4      4       R # R # r?   )r/   Ú_init_weightsÚ
isinstancer€   ÚinitÚcopy_rž   r   r�   r—   ry   r”   rÉ   rÏ   )r5   ræ   r<   s   &&€r   r!  Ú"LevitPreTrainedModel._init_weightsÛ  s³   ø€ Ü‰Ñ˜fÔ%Ü�fœn×-Ò-Ü�JŠJØ×*Ñ*¬E×,<Ò,<¸V¿^¹^Ó,L×,QÑ,QÐRX×RcÑRcÐek×evÑevÓ,wöô ˜Ô 7×8Ò8Ü�JŠJØ×*Ñ*Ü× Ò  §¡Ó0×5Ñ5°f×6HÑ6HÈ&×J[ÑJ[Ó\öñ 9r   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rV   r   )r   r   s   "€r   r   Ú!LevitPreTrainedModel.__annotate__Ó  s   ø‡ ‚ áÑò r   r    )Úimage)r!   r"   r#   r$   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr!  r&   r'   r(   rE   rF   s   @@r   r  r  Ó  s-   ù‡ € ð  ÐØ$€OØ!ÐØ-Ð.Ðõ
÷ … r   r  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	# )Ú
LevitModeliè  c                ó’   <€ \         SV `  V4       Wn        \        V4      V n        \        V4      V n        V P                  4        R # r?   )r/   r0   rV   rH   Úpatch_embeddingsr  ÚencoderÚ	post_initrU   s   &&€r   r0   ÚLevitModel.__init__ê  s8   ø€ Ü‰Ñ˜Ô ØŒÜ 4°VÓ <ˆÔÜ# FÓ+ˆŒà�‰Ör   c          	      ó€   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[S[,          /# ©r   r]   Nr  r  Úreturn)r   r   Úboolr   r   )r   r   s   "€r   r   ÚLevitModel.__annotate__ó  sL   ø€ ÷ "
ñ "
á×'Ñ'¨$Õ.ð"
ñ # T�kð"
ñ ˜D•[ð	"
ñ 
Ñ9Õ	9ñ"
r   c                ór  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVf   \        R4      hV P	                  V4      pV P                  VVVR7      pV^ ,          pVP                  ^R7      pV'       g   Wx3VR,          ,           # \        VVVP                  R7      # )Nz You have to specify pixel_values©r  r  r¹   :rC   NN)r  Úpooler_outputr   )	rV   r  r  rZ   r0  r1  Úmeanr   r   )	r5   r]   r  r  Úkwargsr@   Úencoder_outputsr  Úpooled_outputs	   &&&&,    r   rA   ÚLevitModel.forwardò  sÈ   € ð %9Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@à×*Ñ*¨<Ó8ˆ
ØŸ,™,ØØ!5Ø#ð 'ó 
ˆð ,¨AÕ.Ðð *×.Ñ.°1Ð.Ó5ˆçØ%Ð5¸ÈÕ8KÕKÐKä7Ø/Ø'Ø)×7Ñ7ô
ð 	
r   )rV   r1  r0  ©NNN©
r!   r"   r#   r$   r0   r
   rA   r'   r(   rE   rF   s   @@r   r.  r.  è  s(   ù‡ € õð ÷"
ñ "
ó ÷"
ð "
r   r.  z…
    Levit Model with an image classification head on top (a linear layer on top of the pooled features), 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	# )ÚLevitForImageClassificationi  c                óJ  <€ \         SV `  V4       Wn        VP                  V n        \	        V4      V n        VP                  ^ 8”  d(   \        VP                  R,          VP                  4      M\        P                  P                  4       V n        V P                  4        R# ©rJ   Nrx   )r/   r0   rV   Ú
num_labelsr.  r  r  rL   r   r   ÚIdentityÚ
classifierr2  rU   s   &&€r   r0   Ú$LevitForImageClassification.__init__  s~   ø€ Ü‰Ñ˜Ô ØŒØ ×+Ñ+ˆŒÜ Ó'ˆŒ
ð
 × Ñ  1Ô$ô % V×%8Ñ%8¸Õ%<¸f×>OÑ>OÔPä—‘×"Ñ"Ó$ð 	Œð 	�‰Ö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  r6  )r   r   r�   r7  r   r   )r   r   s   "€r   r   Ú(LevitForImageClassification.__annotate__0  sa   ø€ ÷ "
ñ "
á×'Ñ'¨$Õ.ð"
ñ × Ñ  4Õ'ð"
ñ # T�kð	"
ñ
 ˜D•[ð"
ñ 
Ñ5Õ	5ñ"
r   c                ó|  € Ve   TMV P                   P                  pV P                  WVR7      pV^ ,          pVP                  ^4      pV P	                  V4      pRp	Ve   V P                  W(V P                   4      p	V'       g"   V3VR,          ,           p
V	e   V	3V
,           # T
# \        V	V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).
Nr:  ºr   NN)Úlossr   r   )rV   r  r  r<  rI  Úloss_functionr   r   )r5   r]   rL  r  r  r=  ÚoutputsÚsequence_outputr   rP  Úoutputs   &&&&&,     r   rA   Ú#LevitForImageClassification.forward/  s»   € ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà—*‘*˜\Ðbm�*Ónˆà! !�*ˆØ)×.Ñ.¨qÓ1ˆØ—‘ Ó1ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDçØ�Y ¨¥Õ,ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä3ØØØ!×/Ñ/ô
ð 	
r   )rI  rV   r  rG  )NNNNrB  rF   s   @@r   rD  rD    s(   ù‡ € õð  ÷"
ñ "
ó ÷"
ð "
r   rD  ap  
    LeViT Model transformer with image classification heads on top (a linear layer on top of the final hidden state and
    a linear layer on top of the final hidden state of the distillation token) e.g. for ImageNet. .. warning::
           This model supports inference-only. Fine-tuning with distillation (i.e. with a teacher) is not yet
           supported.
    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	# )Ú&LevitForImageClassificationWithTeacheriU  c                ó   <€ \         SV `  V4       Wn        VP                  V n        \	        V4      V n        VP                  ^ 8”  d(   \        VP                  R,          VP                  4      M\        P                  P                  4       V n        VP                  ^ 8”  d(   \        VP                  R,          VP                  4      M\        P                  P                  4       V n        V P                  4        R# rF  )r/   r0   rV   rG  r.  r  r  rL   r   r   rH  rI  Úclassifier_distillr2  rU   s   &&€r   r0   Ú/LevitForImageClassificationWithTeacher.__init__^  sÃ   ø€ Ü‰Ñ˜Ô ØŒØ ×+Ñ+ˆŒÜ Ó'ˆŒ
ð
 × Ñ  1Ô$ô % V×%8Ñ%8¸Õ%<¸f×>OÑ>OÔPä—‘×"Ñ"Ó$ð 	Œð × Ñ  1Ô$ô % V×%8Ñ%8¸Õ%<¸f×>OÑ>OÔPä—‘×"Ñ"Ó$ð 	Ôð 	�‰Ör   c          	      ó€   <€ V ^8„  d   QhRS[ P                  R,          RS[R,          RS[R,          RS[S[,          /# r5  )r   r   r7  r   r   )r   r   s   "€r   r   Ú3LevitForImageClassificationWithTeacher.__annotate__t  sL   ø€ ÷ 
ñ 
á×'Ñ'¨$Õ.ð
ñ # T�kð
ñ ˜D•[ð	
ñ 
Ñ=Õ	=ñ
r   c                ó^  € Ve   TMV P                   P                  pV P                  WVR7      pV^ ,          pVP                  ^4      pV P	                  V4      V P                  V4      r‡Wx,           ^,          p	V'       g   W—V3VR,          ,           p
V
# \        V	VVVP                  R7      # )Nr:  rO  )r   r   r   r   )rV   r  r  r<  rI  rY  r   r   )r5   r]   r  r  r=  rR  rS  r   Údistill_logitsr   rT  s   &&&&,      r   rA   Ú.LevitForImageClassificationWithTeacher.forwards  s©   € ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà—*‘*˜\Ðbm�*Ónˆà! !�*ˆØ)×.Ñ.¨qÓ1ˆØ%)§_¡_°_Ó%EÀt×G^ÑG^Ð_nÓGo�NØÕ-°Õ2ˆçØ¨.Ð9¸GÀB½KÕGˆFØˆMä;ØØ!Ø .Ø!×/Ñ/ô	
ð 	
r   )rI  rY  rV   r  rG  rA  rB  rF   s   @@r   rW  rW  U  s(   ù‡ € õð* ÷
ñ 
ó ÷
ð 
r   rW  )rD  rW  r.  r  )*r%   r�   Údataclassesr   r   r   r  r   r#  Úmodeling_outputsr   r   r   r   Úmodeling_utilsr	   Úutilsr
   r   Úconfiguration_levitr   Ú
get_loggerr!   Úloggerr   ÚModuler*   rH   r`   rr   r€   rÉ   rÛ   rä   rñ   r  r  r  r.  rD  rW  Ú__all__r    r   r   Ú<module>ri     s·  ðñ ã Ý !ã Ý å &÷ó õ .ß ,Ý ,ð 
×	Ò	˜HÓ	%€ñ ðôð
 ô:°;ó :ó óð:ô$˜"Ÿ)™)ô ô()5˜2Ÿ9™9ô )5ôX	�R—Y‘Yô 	ô�R—Y‘Yô ô;�R—Y‘Yô ;ô|Q˜bŸi™iô Qôh�B—I‘Iô ô$ ˜Ÿ™ô  ô*B�—‘ô BôJ+o�2—9‘9ô +oô\˜rŸy™yô ð  ô˜?ó ó ðð( ô,
Ð%ó ,
ó ð,
ñ^ ðôô4
Ð"6ó 4
óð4
ñn ðôô0
Ð-Aó 0
óð0
òf‚r   