+
    œ°³jKº  ã                   ó˜  € ^ RI HtHt ^ RIHt ^ RIt^ RIHtHt ^RIH	t
 ^RIHt ^RIHtHt ^RIHt ^R	IHt ^R
IHtHtHtHtHt ^RIHtHt ^RIHt ^RIH t  ^RI!H"t"H#t#H$t$ ^RI%H&t&H't' ^RI(H)t) ^RI*H+t+ ]#! RR7      ] ! R R]4      4       4       t, ! R R]PZ                  4      t. ! R R]PZ                  4      t/ ! R R]PZ                  4      t0RER R llt1 ! R R]PZ                  4      t2 ! R  R!]PZ                  4      t3 ! R" R#]PZ                  4      t4 ! R$ R%]4      t5]# ! R& R']4      4       t6]# ! R( R)]64      4       t7 ! R* R+]PZ                  4      t8]#! R,R7       ! R- R.]64      4       t9]#! R/R7       ! R0 R1]64      4       t: ! R2 R3]PZ                  4      t; ! R4 R5]PZ                  4      t< ! R6 R7]PZ                  4      t= ! R8 R9]PZ                  4      t> ! R: R;]PZ                  4      t? ! R< R=]PZ                  4      t@ ! R> R?]PZ                  4      tA]# ! R@ RA]64      4       tB]#! RBR7       ! RC RD]]64      4       tC. RFOtDR# )Gé    )ÚCallableÚIterable)Ú	dataclassN)ÚTensorÚnn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)Úcreate_bidirectional_mask)ÚGradientCheckpointingLayer)ÚBackboneOutputÚBaseModelOutputWithPoolingÚImageClassifierOutputÚMaskedLMOutputÚSemanticSegmenterOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)Ú#compile_compatible_method_lru_cache)ÚTransformersKwargsÚauto_docstringÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputs©Ú
BeitConfigz-
    Class for outputs of [`BeitModel`].
    )Úcustom_introc                   ó   € ] tR t^0tRtRtR# )ÚBeitModelOutputWithPoolinga2  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`):
    Average of the last layer hidden states of the patch tokens (excluding the *[CLS]* token) if
    *config.use_mean_pooling* is set to True. If set to False, then the final hidden state of the *[CLS]* token
    will be returned.
© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r"   ó    Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/beit/modeling_beit.pyr!   r!   0   s   † õr)   r!   c                   óT   a a€ ] tR t^?t oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚBeitPatchEmbeddingszÜ
This class turns `pixel_values` of shape `(batch_size, num_channels, height, width)` into the initial
`hidden_states` (patch embeddings) of shape `(batch_size, seq_length, hidden_size)` to be consumed by a
Transformer.
c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úconfigr   )ÚformatÚ__classdict__s   "€r*   Ú__annotate__Ú BeitPatchEmbeddings.__annotate__F   s   ø€ ÷ xñ x™zñ xr)   c                óÎ  <€ \         SV `  4        VP                  pVP                  p\	        V\
        4      '       d   TMW"3p\	        V\
        4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          V n        W n        W0n        VP                  V n        \        P                  ! VP                  VP                  W3R7      V n        R# )é   ©Úkernel_sizeÚstrideN)ÚsuperÚ__init__Ú
image_sizeÚ
patch_sizeÚ
isinstancer   Únum_patchesÚnum_channelsr   ÚConv2dÚhidden_sizeÚ
projection)Úselfr0   r<   r=   Ú	__class__s   &&  €r*   r;   ÚBeitPatchEmbeddings.__init__F   s³   ø€ Ü‰ÑÔØ×&Ñ&ˆ
Ø×&Ñ&ˆ
Ü#-¨j¼(×#CÒ#C‘ZÈ*ÐIaˆ
Ü#-¨j¼(×#CÒ#C‘ZÈ*ÐIaˆ
à& q�M¨Z¸­]Õ:¸zÈ!½}ÐPZÐ[\ÕP]Õ?]Õ^ˆÔØ$ŒØ$ŒØ"×/Ñ/ˆÔÜŸ)š) F×$7Ñ$7¸×9KÑ9KÐYcÔwˆŽr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )r/   Úpixel_valuesÚreturn©Útorchr   )r1   r2   s   "€r*   r3   r4   S   s'   ø€ ÷ Hñ H¡E§L¡Lð H±U·\±\ñ Hr)   c                óà   € VP                   ^,          pW P                  8w  d   \        RV P                   RV R24      hV P                  V4      P	                  ^4      P                  ^^4      # )r6   zoMake sure that the channel dimension of the pixel values match with the one set in the configuration. Expected z	 but got Ú.)Úshaper@   Ú
ValueErrorrC   ÚflattenÚ	transpose)rD   rH   r@   s   && r*   ÚforwardÚBeitPatchEmbeddings.forwardS   ss   € Ø#×)Ñ)¨!Õ,ˆØ×,Ñ,Ô,ÜðØ!×.Ñ.Ð/¨y¸¸ÀaðIóð ð �‰˜|Ó,×4Ñ4°QÓ7×AÑAÀ!ÀQÓGÐGr)   )r<   r@   r?   r=   rC   ©
r#   r$   r%   r&   r'   r;   rR   r(   Ú__classdictcell__Ú__classcell__©rE   r2   s   @@r*   r,   r,   ?   s(   ù‡ € ñ÷xó x÷H÷ Hð Hr)   r,   c                   ój   a a€ ] tR t^]t oRtV3R lV 3R lltV3R lR ltR	V3R lR lltRtVt	V ;t
# )
ÚBeitEmbeddingszZ
Construct the CLS token, position and patch embeddings. Optionally, also the mask token.
c                ó$   <€ V ^8„  d   QhRS[ RR/# ©r/   r0   rI   Nr   )r1   r2   s   "€r*   r3   ÚBeitEmbeddings.__annotate__b   s   ø€ ÷ >ñ >™zð >¨dñ >r)   c                óœ  <€ \         SV `  4        \        P                  ! \        P
                  ! ^^VP                  4      4      V n        VP                  '       d7   \        P                  ! \        P
                  ! ^^VP                  4      4      MRV n	        \        V4      V n        VP                  V n        V P                  P                  pVP                  '       d>   \        P                  ! \        P
                  ! ^V^,           VP                  4      4      MRV n        \        P                   ! VP"                  4      V n        R# )r6   N)r:   r;   r   Ú	ParameterrK   ÚzerosrB   Ú	cls_tokenÚuse_mask_tokenÚ
mask_tokenr,   Úpatch_embeddingsr=   r?   Ú use_absolute_position_embeddingsÚposition_embeddingsÚDropoutÚhidden_dropout_probÚdropout)rD   r0   r?   rE   s   && €r*   r;   ÚBeitEmbeddings.__init__b   sã   ø€ Ü‰ÑÔäŸš¤e§k¢k°!°Q¸×8JÑ8JÓ&KÓLˆŒØQW×Qf×QfÐQfœ"Ÿ,š,¤u§{¢{°1°a¸×9KÑ9KÓ'LÔMÐlpˆŒÜ 3°FÓ ;ˆÔØ ×+Ñ+ˆŒØ×+Ñ+×7Ñ7ˆð ×6×6Ð6ô �LŠLœŸš Q¨°a­¸×9KÑ9KÓLÔMàð 	Ô ô
 —z’z &×"<Ñ"<Ó=ˆŽr)   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r/   Ú
embeddingsÚheightÚwidthrI   )rK   r   Úint)r1   r2   s   "€r*   r3   r\   q   s;   ø€ ÷ &Dñ &D±5·<±<ð &DÉð &DÑUXð &DÑ]b×]iÑ]iñ &Dr)   c                óæ  € VP                   ^,          ^,
          pV P                  P                   ^,          ^,
          p\        P                  P	                  4       '       g   WE8X  d   W#8X  d   V P                  # V P                  R,          pV P                  R,          pVP                   R,          pW P
                  ,          p	W0P
                  ,          p
\        VR,          4      pVP                  ^W»V4      pVP                  ^ ^^^4      p\        P                  P                  VWš3RRR7      pVP                  ^ ^^^4      P                  ^RV4      p\        P                  ! Wg3^R7      # )	aÐ  
This method allows to interpolate the pre-trained position encodings, to be able to use the model on higher resolution
images. This method is also adapted to support torch.jit tracing.

Adapted from:
- https://github.com/facebookresearch/dino/blob/de9ee3df6cf39fac952ab558447af1fa1365362a/vision_transformer.py#L174-L194, and
- https://github.com/facebookresearch/dinov2/blob/e1277af2ba9496fbadf7aec6eba56e8d882d1e35/dinov2/models/vision_transformer.py#L179-L211
g      à?ÚbicubicF©ÚsizeÚmodeÚalign_corners©Údim)ºNNN:Nr6   N©rw   ºr6   NNéÿÿÿÿ)rN   re   rK   ÚjitÚ
is_tracingr=   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚviewÚcat)rD   rk   rl   rm   r?   Únum_positionsÚclass_pos_embedÚpatch_pos_embedrv   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&        r*   Úinterpolate_pos_encodingÚ'BeitEmbeddings.interpolate_pos_encodingq   sE  € ð !×&Ñ& qÕ)¨AÕ-ˆØ×0Ñ0×6Ñ6°qÕ9¸AÕ=ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×2Ñ2°5Õ9ˆØ×2Ñ2°5Õ9ˆà×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ)×1Ñ1°!Ð5GÐ]`ÓaˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð *×1Ñ1°!°Q¸¸1Ó=×BÑBÀ1ÀbÈ#ÓNˆä�yŠy˜/Ð;ÀÔCÐCr)   c                óv   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[ P                  /# )r/   rH   Úbool_masked_posNrI   )rK   r   Ú
BoolTensor)r1   r2   s   "€r*   r3   r\   ™   s<   ø€ ÷ ñ á—l‘lðñ ×)Ñ)¨DÕ0ðñ 
�‰ñ	r)   c                ó  € VP                   w   r4pV P                  V4      pVP                  4       w  rxpVeZ   V P                  P	                  WxR4      p	VP                  R4      P                  V	4      p
V^V
,
          ,          Wš,          ,           pV P                  P	                  VRR4      p\        P                  ! W¶3^R7      pV P                  e   W`P                  WdV4      ,           pV P                  V4      pV# )Nru   rz   )rN   rc   rr   rb   ÚexpandÚ	unsqueezeÚtype_asr`   rK   r‚   re   r‰   rh   )rD   rH   rŒ   Ú_rl   rm   rk   Ú
batch_sizeÚseq_lenÚmask_tokensÚmaskÚ
cls_tokenss   &&&         r*   rR   ÚBeitEmbeddings.forward™   så   € ð
 +×0Ñ0Ñˆˆ1�eØ×*Ñ*¨<Ó8ˆ
Ø!+§¡Ó!2Ñˆ
˜QàÒ&ØŸ/™/×0Ñ0°ÀbÓIˆKà"×,Ñ,¨RÓ0×8Ñ8¸ÓEˆDØ# q¨4¥xÕ0°;Õ3EÕEˆJà—^‘^×*Ñ*¨:°r¸2Ó>ˆ
Ü—Y’Y 
Ð7¸QÔ?ˆ
à×#Ñ#Ò/Ø#×&CÑ&CÀJÐX]Ó&^Õ^ˆJà—\‘\ *Ó-ˆ
àÐr)   )r`   rh   rb   rc   r=   re   ©N)r#   r$   r%   r&   r'   r;   r‰   rR   r(   rU   rV   rW   s   @@r*   rY   rY   ]   s0   ù‡ € ñ÷>ó >÷&Dð &D÷P÷ ò r)   rY   c                   óˆ   a a€ ] tR t^³t oV3R lV 3R llt]]! ^
R7      V3R lR l4       4       tR	V3R lR lltRt	Vt
V ;t# )
ÚBeitRelativePositionBiasc                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   Ú%BeitRelativePositionBias.__annotate__´   s   ø€ ÷ 	
ñ 	
™zð 	
¨dñ 	
r)   c                ó  <€ \         SV `  4        VP                  p\        V\        \
        34      '       g   W"3pV^ ,          VP                  ,          V^,          VP                  ,          3V n        ^V P                  ^ ,          ,          ^,
          ^V P                  ^,          ,          ^,
          ,          ^,           V n        \        P                  ! \        P                  ! V P                  VP                  4      4      V n        R# )r   N)r:   r;   r<   r>   ÚtupleÚlistr=   Úwindow_sizeÚnum_relative_distancer   r^   rK   r_   Únum_attention_headsÚrelative_position_bias_table)rD   r0   r<   rE   s   && €r*   r;   Ú!BeitRelativePositionBias.__init__´   sÈ   ø€ Ü‰ÑÔØ×&Ñ&ˆ
Ü˜*¤u¬d m×4Ò4Ø$Ð1ˆJØ& q�M¨V×->Ñ->Õ>À
È1ÅÐQW×QbÑQbÕ@bÐcˆÔØ&'¨$×*:Ñ*:¸1Õ*=Õ&=ÀÕ&AÀaÈ$×JZÑJZÐ[\ÕJ]ÕF]Ð`aÕFaÕ%bÐefÕ%fˆÔ"Ü,.¯LªLÜ�KŠK˜×2Ñ2°F×4NÑ4NÓOó-
ˆÖ)r)   )Úmaxsizec                óP   <€ V ^8„  d   QhRS[ S[S[3,          RS[P                  /# )r/   r¡   rI   )rŸ   rn   rK   r   )r1   r2   s   "€r*   r3   r�   Â   s'   ø€ ÷ 'ñ '±e¹CÁ¸Hµoð 'É%Ï,É,ñ 'r)   c                ó¸  € ^V ^ ,          ,          ^,
          ^V ^,          ,          ^,
          ,          ^,           pV ^ ,          V ^,          ,          p\         P                  ! \         P                  ! \         P                  ! \         P                  ! V ^ ,          4      \         P                  ! V ^,          4      RR7      4      ^R7      pVR,          VR,          ,
          P                  ^^^ 4      P                  4       pVR;;,          V ^ ,          ^,
          ,          uu&   VR;;,          V ^,          ^,
          ,          uu&   VR;;,          ^V ^,          ,          ^,
          ,          uu&   \         P                  ! V^,           3^,          VP                  R7      pVP                  R	4      VR
&   V^,
          VR&   V^,
          VR&   V^,
          VR&   V# )z§
This method creates the relative position index, modified to support arbitrary window sizes,
as introduced in [MiDaS v3.1](https://huggingface.co/papers/2307.14460).
Úij)Úindexing)Ú	start_dim)rr   Údtype)rw   rw   N)rw   Nrw   )rw   rw   r   )rw   rw   r6   rz   )ry   ry   )r   ºr   NN)r­   r   )r   r   )
rK   rP   ÚstackÚmeshgridÚaranger~   Ú
contiguousr_   r¬   Úsum)r¡   r¢   Úwindow_areaÚcoords_flattenÚrelative_coordsÚrelative_position_indexs   &     r*   Ú generate_relative_position_indexÚ9BeitRelativePositionBias.generate_relative_position_indexÀ   s  € ð "# [°¥^Õ!3°aÕ!7¸AÀÈAÅÕ<NÐQRÕ<RÕ SÐVWÕ WÐØ! !•n {°1¥~Õ5ˆô ŸšÜ�KŠKœŸš¤u§|¢|°KÀµNÓ'CÄUÇ\Â\ÐR]Ð^_ÕR`ÓEaÐlpÔqÓrØô
ˆð *¨*Õ5¸ÀzÕ8RÕR×[Ñ[Ð\]Ð_`ÐbcÓd×oÑoÓqˆà˜×  K°¥N°QÕ$6Õ6Ó Ø˜×  K°¥N°QÕ$6Õ6Ó Ø˜×  A¨°A­Õ$6¸Õ$:Õ:Ó ä"'§+¢+°KÀ!µOÐ3EÈÕ3IÐQ`×QfÑQfÔ"gÐØ*9×*=Ñ*=¸bÓ*AÐ Ñ'Ø)>ÀÕ)BÐ Ñ&Ø)>ÀÕ)BÐ Ñ&Ø(=ÀÕ(AÐ Ñ%Ø&Ð&r)   c                ó:   <€ V ^8„  d   QhRS[ RS[P                  /# )r/   r‰   rI   )ÚboolrK   r   )r1   r2   s   "€r*   r3   r�   Ü   s"   ø€ ÷ -3ñ -3¹Tð -3Ñ]b×]iÑ]iñ -3r)   c                ót  € ^V P                   ^ ,          ,          ^,
          p^V P                   ^,          ,          ^,
          p^V^ ,          ,          ^,
          p^V^,          ,          ^,
          pV P                  pV P                  p	Wg,          ^,           p
VRV	^,
           pVP                  ^WTR4      P	                  ^ ^^^4      p\
        P                  P                  V\        V4      \        V4      3RR7      pVP	                  ^ ^^^4      P                  V
^,
          R4      p\        P                  ! WÈV	^,
          R .4      pV P                  V4      pWÞP                  R4      ,          pVP                  V^ ,          V^,          ,          ^,           V^ ,          V^,          ,          ^,           R4      pVP	                  ^^ ^4      P                  4       pV'       dC   \
        P                  P                  VP                  ^4      W33RRR7      P                  ^4      pVP                  ^ 4      # )ze
Modification of timm.models.beit.py: Attention._get_rel_pos_bias to support arbitrary window sizes.
NÚbilinear)rr   rs   Frq   rz   )r¡   r¤   r¢   r}   r~   r   r   r€   r   rK   r‚   r·   r�   r±   r�   Úsqueeze)rD   r¡   r‰   Údim_sizeÚ
old_heightÚ	old_widthr†   r‡   Ú old_relative_position_bias_tableÚold_num_relative_distanceÚnew_num_relative_distanceÚold_sub_tableÚnew_sub_tableÚ new_relative_position_bias_tabler¶   Úrelative_position_biass   &&&&            r*   rR   Ú BeitRelativePositionBias.forwardÜ   s!  € ð ˜×)Ñ)¨!Õ,Õ,¨qÕ0ˆ
Ø˜×(Ñ(¨Õ+Õ+¨aÕ/ˆ	à˜ Q�Õ'¨!Õ+ˆ
Ø˜ A�Õ&¨Õ*ˆ	à+/×+LÑ+LÐ(à$(×$>Ñ$>Ð!Ø$.Õ$:¸QÕ$>Ð!à8Ð9XÐ;TÐWXÕ;XÐYˆà%×-Ñ-¨a°ÈÓK×SÑSÐTUÐWXÐZ[Ð]^Ó_ˆÜŸ™×1Ñ1Ø¤¨:Ó!6¼	À)Ó8LÐ MÐT^ð 2ó 
ˆð &×-Ñ-¨a°°A°qÓ9×AÑAÐB[Ð^_ÕB_ÐacÓdˆä+0¯9ª9ØÐ=VÐYZÕ=ZÐ=\Ð]Ð^ó,
Ð(ð #'×"GÑ"GÈÓ"TÐØ!A×B^ÑB^Ð_aÓBbÕ!cÐð "8×!<Ñ!<Ø˜�N˜[¨�^Õ+¨aÕ/°¸QµÀ+ÈaÅ.Õ1PÐSTÕ1TÐVXó"
Ðð "8×!?Ñ!?ÀÀ1ÀaÓ!H×!SÑ!SÓ!UÐç#Ü%'§]¡]×%>Ñ%>Ø&×0Ñ0°Ó3ØÐ)ØØ#ð	 &?ó &÷
 ‰g�a‹jð #ð &×/Ñ/°Ó2Ð2r)   )r¢   r¤   r¡   )FN)r#   r$   r%   r&   r;   Ústaticmethodr   r·   rR   r(   rU   rV   rW   s   @@r*   r›   r›   ³   s?   ù‡ € ÷	
ó 	
ð Ù(°Ô4÷'ó 5ó ð'÷4-3÷ -3ò -3r)   r›   c                ó  € V ^8„  d   QhR\         P                  R\        P                  R\        P                  R\        P                  R\        P                  R,          R\        R,          R\        R	\
        \        ,          /# )
r/   ÚmoduleÚqueryÚkeyÚvalueÚattention_maskNÚscalingrh   Úkwargs)r   ÚModulerK   r   Úfloatr   r   )r1   s   "r*   r3   r3     s{   € ÷ %ñ %Ü�I‰Ið%ä�<‰<ð%ô 
�‰ð%ô �<‰<ð	%ô
 —L‘L 4Õ'ð%ô �T�\ð%ô ð%ô Ô'Õ(ñ%r)   c                 ó  € Vf   VP                  R4      R,          p\        P                  ! WP                  ^^4      4      V,          pVe	   W„,           p\        P
                  P                  VR\        P                  R7      P                  VP                  4      p\        P
                  P                  W†V P                  R7      p\        P                  ! Wƒ4      p	V	P                  ^^4      P                  4       p	W˜3# )N)rv   r¬   )ÚpÚtrainingrz   ç      à¿)rr   rK   ÚmatmulrQ   r   r   ÚsoftmaxÚfloat32Útor¬   rh   rÖ   r±   )
rË   rÌ   rÍ   rÎ   rÏ   rÐ   rh   rÑ   Úattn_weightsÚattn_outputs
   &&&&&&&,  r*   Úeager_attention_forwardrÞ     sÉ   € ð ‚Ø—*‘*˜R“. DÕ(ˆô —<’< §}¡}°Q¸Ó':Ó;¸gÕE€LàÒ!Ø#Õ4ˆä—=‘=×(Ñ(¨¸2ÄUÇ]Á]Ð(ÓS×VÑVÐW\×WbÑWbÓc€LÜ—=‘=×(Ñ(¨È6Ï?É?Ð(Ó[€Lä—,’,˜|Ó3€KØ×'Ñ'¨¨1Ó-×8Ñ8Ó:€KàÐ$Ð$r)   c                   óT   a a€ ] tR tRt oV3R lV 3R lltRV3R lR lltRtVtV ;t# )ÚBeitAttentioni(  c                ó    <€ V ^8„  d   QhRS[ /# r.   r   )r1   r2   s   "€r*   r3   ÚBeitAttention.__annotate__)  s   ø€ ÷ `ñ `™zñ `r)   c                ó  <€ \         SV `  4        Wn        VP                  V n        \	        VR VP
                  VP                  ,          4      V n        VP                  V n        V P                  R,          V n	        RV n
        \        P                  ! VP
                  VP                  V P                  ,          4      V n        \        P                  ! VP
                  VP                  V P                  ,          RR7      V n        \        P                  ! VP
                  VP                  V P                  ,          4      V n        \        P                  ! VP                  V P                  ,          VP
                  4      V n        R# )Úhead_dimF)ÚbiasNr×   )r:   r;   r0   r£   ÚgetattrrB   rä   Úattention_probs_dropout_probÚattention_dropoutrÐ   Ú	is_causalr   ÚLinearÚq_projÚk_projÚv_projÚo_proj©rD   r0   rE   s   &&€r*   r;   ÚBeitAttention.__init__)  s  ø€ Ü‰ÑÔØŒØ#)×#=Ñ#=ˆÔ Ü ¨
°F×4FÑ4FÈ&×JdÑJdÕ4dÓeˆŒØ!'×!DÑ!DˆÔØ—}‘} dÕ*ˆŒØˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Õ4^Ó_ˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Õ4^ÐejÔkˆŒÜ—i’i × 2Ñ 2°F×4NÑ4NÐQU×Q^ÑQ^Õ4^Ó_ˆŒÜ—i’i × :Ñ :¸T¿]¹]Õ JÈF×L^ÑL^Ó_ˆŽr)   c          
      ó¶   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[S[,          RS[S[ P                  S[ P                  3,          /# )r/   Úhidden_statesrÏ   NrÑ   rI   )rK   r   r   r   rŸ   )r1   r2   s   "€r*   r3   râ   6  sX   ø€ ÷ )ñ )á—|‘|ð)ñ Ÿ™ tÕ+ð)ñ Ñ+Õ,ð	)ñ
 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ)r)   c                ó¨  € VP                   R R p. VORNV P                  N5pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      pV P                  V4      P                  V4      P	                  ^^4      p\        P                  ! V P                  P                  \        4      p	T	! V VVVV3RV P                  '       g   RMV P                  RV P                  /VB w  r«V
P                  ! . VORN5!  P!                  4       p
V P#                  V
4      p
W«3# )Nrh   ç        rÐ   rz   )rN   rä   rë   r�   rQ   rì   rí   r   Úget_interfacer0   Ú_attn_implementationrÞ   rÖ   rè   rÐ   r}   r±   rî   )rD   rò   rÏ   rÑ   Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesÚattention_interfacerÝ   rÜ   s   &&&,        r*   rR   ÚBeitAttention.forward6  sN  € ð $×)Ñ)¨#¨2Ð.ˆØ8˜Ð8 bÐ8¨$¯-©-Ñ8ˆà—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆØ—[‘[ Ó/×4Ñ4°\ÓB×LÑLÈQÐPQÓRˆ
Ø—{‘{ =Ó1×6Ñ6°|ÓD×NÑNÈqÐRSÓTˆä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆàÐ(Ð(r)   )
rè   r0   rä   ré   rì   r£   rî   rë   rÐ   rí   r™   ©	r#   r$   r%   r&   r;   rR   r(   rU   rV   rW   s   @@r*   rà   rà   (  s    ù‡ € ÷`ó `÷)÷ )ò )r)   rà   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚBeitMLPiX  c                ó    <€ V ^8„  d   QhRS[ /# r.   r   )r1   r2   s   "€r*   r3   ÚBeitMLP.__annotate__Y  s   ø€ ÷ Kñ K™zñ Kr)   c                ó(  <€ \         SV `  4        Wn        \        VP                  ,          V n        \        P                  ! VP                  VP                  4      V n
        \        P                  ! VP                  VP                  4      V n        R # r™   )r:   r;   r0   r	   Ú
hidden_actÚactivation_fnr   rê   rB   Úintermediate_sizeÚfc1Úfc2rï   s   &&€r*   r;   ÚBeitMLP.__init__Y  sb   ø€ Ü‰ÑÔØŒÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜V×/Ñ/°×1IÑ1IÓJˆŒÜ—9’9˜V×5Ñ5°v×7IÑ7IÓJˆŽr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r/   rò   rI   rJ   )r1   r2   s   "€r*   r3   r  `  ó#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r)   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r™   )r  r  r  ©rD   rò   s   &&r*   rR   ÚBeitMLP.forward`  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆàÐr)   )r  r0   r  r  rþ   rW   s   @@r*   r   r   X  s    ù‡ € ÷Kó K÷÷ ð 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
# )ÚBeitDropPathih  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_probrI   N)rÓ   )r1   r2   s   "€r*   r3   ÚBeitDropPath.__annotate__o  s   ø€ ÷ #ñ #¡%ð #°$ñ #r)   c                ó0   <€ \         SV `  4        Wn        R # r™   )r:   r;   r  )rD   r  rE   s   &&€r*   r;   ÚBeitDropPath.__init__o  s   ø€ Ü‰ÑÔØ"Žr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rJ   )r1   r2   s   "€r*   r3   r  s  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,          # )rô   )r¬   Údevice)r6   )
r  rÖ   rN   ÚndimrK   Úrandr¬   r  ÚfloorÚdiv)rD   rò   Ú	keep_probrN   Úrandom_tensors   &&   r*   rR   ÚBeitDropPath.forwards  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/   rI   )Ústr)r1   r2   s   "€r*   r3   r  |  s   ø€ ÷ %ñ %™Cñ %r)   c                ó    € R V P                    2# )zp=©r  ©rD   s   &r*   Ú
extra_reprÚBeitDropPath.extra_repr|  s   € Ø�D—N‘NÐ#Ð$Ð$r)   r$  ©rô   )r#   r$   r%   r&   r'   r;   rR   r&  r(   rU   rV   rW   s   @@r*   r  r  h  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r)   r  c                   ó\   a a€ ] tR tRt oRtRV3R lV 3R llltR	V3R lR lltRtVtV ;t	# )
Ú	BeitLayeri€  z?This corresponds to the Block class in the timm implementation.c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r/   r0   Údrop_path_rate)r   rÓ   )r1   r2   s   "€r*   r3   ÚBeitLayer.__annotate__ƒ  s   ø€ ÷ vñ v™zð v¹5ñ vr)   c                ó†  <€ \         SV `  4        \        V4      V n        \        P
                  ! VP                  VP                  R 7      V n        \        P
                  ! VP                  VP                  R 7      V n	        \        V4      V n        \        P                  ! VP                  4      V n        VP                  V n        VR8”  d   \!        V4      M\        P"                  ! 4       V n        VP&                  pV^ 8”  d>   \        P(                  ! V\*        P,                  ! VP                  4      ,          RR7      MRV n        V^ 8”  d>   \        P(                  ! V\*        P,                  ! VP                  4      ,          RR7      MRV n        VP2                  '       d   \5        V4      V n        R# RV n        R# )©Úepsrô   T)Úrequires_gradg      ð?N)r:   r;   rà   Ú	attentionr   Ú	LayerNormrB   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterr   Úmlprf   rg   rh   r=   r  ÚIdentityÚ	drop_pathÚlayer_scale_init_valuer^   rK   ÚonesÚlambda_1Úlambda_2Úuse_relative_position_biasr›   rÇ   )rD   r0   r,  Úinit_valuesrE   s   &&& €r*   r;   ÚBeitLayer.__init__ƒ  sC  ø€ Ü‰ÑÔÜ& vÓ.ˆŒÜ "§¢¨V×-?Ñ-?ÀV×EZÑEZÔ [ˆÔÜ!Ÿ|š|¨F×,>Ñ,>ÀF×DYÑDYÔZˆÔÜ˜6“?ˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒØ ×+Ñ+ˆŒØ9GÈ#Ô9Mœ nÔ5ÔSU×S^ÒS^ÓS`ˆŒà×3Ñ3ˆà^iÐlmÔ^mŒB�LŠL˜¤u§z¢z°&×2DÑ2DÓ'EÕEÐUYÕZÐsvð 	Œð _jÐlmÔ^mŒB�LŠL˜¤u§z¢z°&×2DÑ2DÓ'EÕEÐUYÕZÐsvð 	Œð KQ×Jk×JkÐJkÔ&>¸vÓ&FˆÖ#ÐquˆÖ#r)   c                ó¼   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[RS[S[S[3,          R,          RS[S[,          RS[ P                  /# )r/   rò   rÏ   Nr‰   Ú
resolutionrÑ   rI   )rK   r   rº   rŸ   rn   r   r   )r1   r2   s   "€r*   r3   r-  –  sk   ø€ ÷ &ñ &á—|‘|ð&ñ Ÿ™ tÕ+ð&ñ #'ð	&ñ
 ™#™s˜(•O dÕ*ð&ñ Ñ+Õ,ð&ñ 
�‰ñ&r)   c                ób  € V P                   e[   Vw  rgW`P                  ,          WpP                  ,          3pV P                  WƒVP                  ^,          R7      p	Ve	   W’,           MT	pTp
V P                  V4      pV P                  ! V3RV/VB w  rV P                  V4      pV P                  V,          pV P                  V4      V
,           pTp
V P                  V4      pV P                  V4      pV P                  V4      pV P                  V,          pV P                  V4      V
,           pV# )N)r¾   rÏ   )rÇ   r=   rN   r5  r2  rh   r<  r9  r6  r7  r=  )rD   rò   rÏ   r‰   rB  rÑ   rl   rm   r¡   rÇ   Úresidualr’   s   &&&&&,      r*   rR   ÚBeitLayer.forward–  s6  € ð ×&Ñ&Ò2Ø&‰MˆFØ!§_¡_Õ4°e¿¹Õ6NÐOˆKØ%)×%@Ñ%@ØÀ×@SÑ@SÐTUÕ@Vð &Aó &Ð"ð <JÒ;UÐ&Ö7Ð[qð ð
 !ˆØ×-Ñ-¨mÓ<ˆØŸ>š>Øñ
à)ð
ð ñ
Ñˆð
 Ÿ™ ]Ó3ˆØŸ™¨Õ5ˆØŸ™ }Ó5¸Õ@ˆð !ˆØ×,Ñ,¨]Ó;ˆØŸ™ Ó/ˆØŸ™ ]Ó3ˆØŸ™¨Õ5ˆØŸ™ }Ó5¸Õ@ˆàÐr)   )
r2  r9  rh   r<  r=  r6  r5  r7  r=   rÇ   r(  ©NFNrT   rW   s   @@r*   r*  r*  €  s#   ù‡ € ÙI÷võ v÷&&÷ &ò &r)   r*  c                   ó¦   a a€ ] tR tRt oRtRtRtRtR.tRt	Rt
RtRtRtR]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# )ÚBeitPreTrainedModeli¿  ÚbeitrH   Tr*  Frò   Ú
attentionsrc   z.*relative_position_index.*c                ó  <€ \         SV `  V4       \        V\        4      '       d�   \        P
                  ! VP                  4       VP                  e!   \        P
                  ! VP                  4       VP                  e#   \        P
                  ! VP                  4       R# R# \        V\        4      '       d#   \        P
                  ! VP                  4       R# \        V\        4      '       d™   \        VP                  \        P                  4      '       dm   \        P                  ! VP                  V P                   P"                  4       \        P                  ! VP$                  V P                   P"                  4       R# R# R# )zInitialize the weightsN)r:   Ú_init_weightsr>   rY   ÚinitÚzeros_r`   rb   re   r›   r¤   r*  r<  r   r^   Ú	constant_r0   r:  r=  )rD   rË   rE   s   &&€r*   rL  Ú!BeitPreTrainedModel._init_weightsÓ  sö   ø€ ô 	‰Ñ˜fÔ%Ü�fœn×-Ò-Ü�KŠK˜×(Ñ(Ô)Ø× Ñ Ò,Ü—’˜F×-Ñ-Ô.Ø×)Ñ)Ò5Ü—’˜F×6Ñ6Ö7ñ 6ä˜Ô 8×9Ò9Ü�KŠK˜×;Ñ;Ö<Ü˜¤	×*Ò*Ü˜&Ÿ/™/¬2¯<©<×8Ò8Ü—’˜vŸ™°·±×0RÑ0RÔSÜ—’˜vŸ™°·±×0RÑ0RÖSñ 9ñ +r)   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # r.   r   )r1   r2   s   "€r*   r3   Ú BeitPreTrainedModel.__annotate__¿  s   ø‡ ‚ áÑò r)   r"   )Úimage)r#   r$   r%   r&   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesÚ_supports_sdpaÚ_supports_flash_attnÚ_supports_flex_attnÚ_supports_attention_backendÚ_can_compile_fullgraphr*  rà   Ú_can_record_outputsÚ_input_embed_layerÚ"_keys_to_ignore_on_load_unexpectedrK   Úno_gradrL  Ú__annotate_func__r(   rU   rV   rW   s   @@r*   rH  rH  ¿  s‡   ù‡ € ð ÐØ$€OØ!ÐØ&*Ð#Ø$˜ÐØ€NØ ÐØÐØ"&ÐØ!Ðà˜Ø�mðÐð ,ÐØ*HÐ)IÐ&à
‡]‚]ƒ_ôTó ðT÷+ … r)   rH  c                   ó„   a a€ ] tR tRt oR	V3R lV 3R lllt]]! RR7      ]R
V3R lR ll4       4       4       tRt	Vt
V ;t# )Ú	BeitModeliå  c                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r/   r0   Úadd_pooling_layerrI   N)r   rº   )r1   r2   s   "€r*   r3   ÚBeitModel.__annotate__ç  s"   ø€ ÷ ñ ™zð ¹dð Èdñ r)   c           
     óÈ  <€ \         SV `  V4       Wn        \        V4      V n        VP
                  '       d   \        V4      MRV n        \        VP                  4       Uu. uF7  q1P                  V,          \        VP                  ^,
          ^4      ,          NK9  	  pp\        P                  ! V Uu. uF  p\        WR7      NK  	  up4      V n        VP                   '       d   \        P"                  ! 4       M+\        P$                  ! VP&                  VP(                  R7      V n        V'       d   \-        V4      MRV n        V P1                  4        R# u upi u upi )z^
add_pooling_layer (bool, *optional*, defaults to `True`):
    Whether to add a pooling layer
N)r,  r/  )r:   r;   r0   rY   rk   Ú!use_shared_relative_position_biasr›   Úshared_position_biasÚrangeÚnum_hidden_layersr,  Úmaxr   Ú
ModuleListr*  ÚlayersÚuse_mean_poolingr8  r3  rB   r4  Ú	layernormÚ
BeitPoolerÚpoolerÚ	post_init)rD   r0   rf  ÚiÚdrop_path_ratesÚrrE   s   &&&   €r*   r;   ÚBeitModel.__init__ç  s  ø€ ô
 	‰Ñ˜Ô ØŒä(¨Ó0ˆŒà06×0X×0XÐ0XÔ$ VÔ,Ð^bð 	Ô!ô W\Ð\b×\tÑ\tÔVuó
ÙVuÐQR×!Ñ! AÕ%¬¨F×,DÑ,DÀqÕ,HÈ!Ó(L×LÐLÑVuð 	ð 
ô —m’mÑRaÓ$bÑRaÈQ¤Y¨v×%HÑRaÑ$bÓcˆŒð $×4×4Ð4ŒB�KŠKŒM¼"¿,º,Àv×GYÑGYÐ_e×_tÑ_tÔ:uð 	Œ÷ ->”j Ô(À4ˆŒð 	�‰Öùò
ùò %cs   Á"=EÂ5EF)Útie_last_hidden_statesc                ó¦   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[RS[ P                  R,          RS[S[,          RS[/# )r/   rH   rŒ   Nr‰   rÏ   rÑ   rI   )rK   r   r�   rº   r   r   r!   )r1   r2   s   "€r*   r3   rg    sm   ø€ ÷ -jñ -já—l‘lð-jñ ×)Ñ)¨DÕ0ð-jñ #'ð	-jñ
 Ÿ™ tÕ+ð-jñ Ñ+Õ,ð-jñ 
$ñ-jr)   c           
     ó8  € V P                  WR7      pVP                  R,          p\        V P                  VVR7      pV P                  eo   Vw  r‰W€P                  P
                  ,          W�P                  P
                  ,          3p
V P	                  W£VP                  ^,          R7      pVe	   W´,           MTpTpV P                   F  pV! V3RVRVRV/VB pK  	  V P                  V4      pV P                  e   V P                  V4      MRp\        WïR	7      # )
z³
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, num_patches)`, *optional*):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0).
)rŒ   ºr/   NN)r0   Úinputs_embedsrÏ   N)r‰   r¾   rÏ   r‰   rB  )Úlast_hidden_stateÚpooler_output)
rk   rN   r   r0   rj  r=   ro  rq  rs  r!   )rD   rH   rŒ   r‰   rÏ   rÑ   Úembedding_outputrB  rl   rm   r¡   Úshared_relative_position_biasrò   ÚlayerÚsequence_outputÚpooled_outputs   &&&&&,          r*   rR   ÚBeitModel.forward   s4  € ð  Ÿ?™?¨<˜?ÓYÐØ!×'Ñ'¨Õ+ˆ
ä2Ø—;‘;Ø*Ø)ô
ˆð ×$Ñ$Ò0Ø&‰MˆFØ!§[¡[×%;Ñ%;Õ;¸UÇkÁk×F\ÑF\Õ=\Ð]ˆKØ,0×,EÑ,EØÐYi×YoÑYoÐpqÕYrð -Fó -Ð)ð
 "Ò-ð .Ö>à2ð ð )ˆØ—[”[ˆEÙ!Øñà-ðð *Bðð &ð	ð
 ñŠMñ !ð Ÿ.™.¨Ó7ˆØ8<¿¹Ò8O˜Ÿ™ OÔ4ÐUYˆä)¸OÔiÐir)   )r0   rk   rq  ro  rs  rj  )TrF  )r#   r$   r%   r&   r;   r   r   r   rR   r(   rU   rV   rW   s   @@r*   rd  rd  å  sF   ù‡ € ÷õ ð2  Ù¨EÔ2Ø÷-jñ -jó ó 3ó  ÷-jð -jr)   rd  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )rr  i3  c                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   ÚBeitPooler.__annotate__4  s   ø€ ÷ 
ñ 
™zð 
¨dñ 
r)   c                ó¼   <€ \         SV `  4        VP                  '       d4   \        P                  ! VP
                  VP                  R 7      V n        R# RV n        R# )r/  N)r:   r;   rp  r   r3  rB   r4  rq  rï   s   &&€r*   r;   ÚBeitPooler.__init__4  sD   ø€ Ü‰ÑÔàKQ×Kb×KbÐKbŒB�LŠL˜×+Ñ+°×1FÑ1FÔGð 	ŽØhlð 	Žr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rJ   )r1   r2   s   "€r*   r3   rˆ  :  s'   ø€ ÷ vñ v¡U§\¡\ð v±e·l±lñ vr)   c                ó~   € V P                   e(   V P                  VR,          P                  ^4      4      # VR,          # )N©rw   ry   rw   )rw   r   )rq  Úmeanr  s   &&r*   rR   ÚBeitPooler.forward:  s6   € àBFÇ.Á.ÒB\ˆt�~‰~˜m¨HÕ5×:Ñ:¸1Ó=Ó>ÐuÐboÐptÕbuÐur)   )rq  rþ   rW   s   @@r*   rr  rr  3  s!   ù‡ € ÷
ó 
÷v÷ vð vr)   rr  aÔ  
    Beit Model transformer with a 'language' modeling head on top. BEiT does masked image modeling by predicting
    visual tokens of a Vector-Quantize Variational Autoencoder (VQ-VAE), whereas other vision models like ViT and DeiT
    predict RGB pixel values. As a result, this class is incompatible with [`AutoModelForMaskedImageModeling`], so you
    will need to use [`BeitForMaskedImageModeling`] directly if you wish to do masked image modeling with BEiT.
    c                   ón   a a€ ] tR tRt oV3R lV 3R lltR t]]RV3R lR ll4       4       tRt	Vt
V ;t# )	ÚBeitForMaskedImageModelingi?  c                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   Ú'BeitForMaskedImageModeling.__annotate__H  s   ø€ ÷ ñ ™zð ¨dñ r)   c                óN  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        \
        P                  ! VP                  VP                  R7      V n	        \
        P                  ! VP                  VP                  4      V n        V P                  4        R# )F©rf  r/  N)r:   r;   Ú
num_labelsrd  rI  r   r3  rB   r4  rq  rê   Ú
vocab_sizeÚlm_headrt  rï   s   &&€r*   r;   Ú#BeitForMaskedImageModeling.__init__H  su   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ˜f¸Ô>ˆŒ	ô Ÿš f×&8Ñ&8¸f×>SÑ>SÔTˆŒÜ—y’y ×!3Ñ!3°V×5FÑ5FÓGˆŒð 	�‰Ör)   c                ó   € R # r™   r"   r%  s   &r*   Úget_output_embeddingsÚ0BeitForMaskedImageModeling.get_output_embeddingsU  s   € Ùr)   c                óì   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[ P                  R,          RS[RS[ P                  R,          RS[S[,          RS[S[,          /# )	r/   rH   NrŒ   Úlabelsr‰   rÏ   rÑ   rI   )rK   r   r�   rº   r   r   rŸ   r   )r1   r2   s   "€r*   r3   r“  Z  s‹   ø€ ÷ @
ñ @
á—l‘l TÕ)ð@
ñ ×)Ñ)¨DÕ0ð@
ñ —‘˜tÕ#ð	@
ñ
 #'ð@
ñ Ÿ™ tÕ+ð@
ñ Ñ+Õ,ð@
ñ 
‘Õ	ñ@
r)   c           	     ó8  € V P                   ! V3RVRVRV/VB pVP                  pV P                  V4      pV P                  VR,          4      p	Rp
Ve%   \        P
                  ! 4       pV! W’,          V4      p
\        V
V	VP                  VP                  R7      # )a½  
bool_masked_pos (`torch.BoolTensor` of shape `(batch_size, num_patches)`):
    Boolean masked positions. Indicates which patches are masked (1) and which aren't (0).
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).

Examples:

```python
>>> from transformers import AutoImageProcessor, BeitForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/beit-base-patch16-224-pt22k")
>>> model = BeitForMaskedImageModeling.from_pretrained("microsoft/beit-base-patch16-224-pt22k")

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="pt").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = torch.randint(low=0, high=2, size=(1, num_patches)).bool()

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, logits = outputs.loss, outputs.logits
>>> list(logits.shape)
[1, 196, 8192]
```rŒ   r‰   rÏ   N©ÚlossÚlogitsrò   rJ  rx   )	rI  r~  rq  r˜  r   ÚCrossEntropyLossr   rò   rJ  )rD   rH   rŒ   rž  r‰   rÏ   rÑ   Úoutputsrƒ  Úprediction_scoresÚmasked_lm_lossÚloss_fcts   &&&&&&,     r*   rR   Ú"BeitForMaskedImageModeling.forwardX  s¹   € ðX —)’)Øñ
à+ð
ð &>ð
ð *ð	
ð
 ñ
ˆð "×3Ñ3ˆØŸ.™.¨Ó9ˆØ ŸL™L¨¸Õ)?Ó@ÐàˆØÒÜ×*Ò*Ó,ˆHÙ%Ð&7Õ&HÈ&ÓQˆNäØØ$Ø!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   )rI  rq  r˜  r–  )NNNFN)r#   r$   r%   r&   r;   r›  r   r   rR   r(   rU   rV   rW   s   @@r*   r‘  r‘  ?  s>   ù‡ € ÷ó òð Ø÷@
ñ @
ó ó ÷@
ð @
r)   r‘  z¶
    Beit Model transformer with an image classification head on top (a linear layer on top of the average of the final
    hidden states of the patch tokens) e.g. for ImageNet.
    c                   óh   a a€ ] tR tRt oV3R lV 3R llt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚBeitForImageClassificationi�  c                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   Ú'BeitForImageClassification.__annotate__¤  s   ø€ ÷ 
ñ 
™zð 
¨dñ 
r)   c                ó8  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        VP                  ^ 8”  d,   \
        P                  ! VP                  VP                  4      M\
        P                  ! 4       V n	        V P                  4        R# )Tr•  N)r:   r;   r–  rd  rI  r   rê   rB   r8  Ú
classifierrt  rï   s   &&€r*   r;   Ú#BeitForImageClassification.__init__¤  ss   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ˜f¸Ô=ˆŒ	ð OU×N_ÑN_ÐbcÔNcœ"Ÿ)š) F×$6Ñ$6¸×8IÑ8IÔJÔik×itÒitÓivˆŒð 	�‰Ör)   c                óœ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[S[,          /# ©r/   rH   Nrž  r‰   rÑ   rI   )rK   r   rº   r   r   rŸ   r   )r1   r2   s   "€r*   r3   r¬  ²  s[   ø€ ÷  
ñ  
á—l‘l TÕ)ð 
ñ —‘˜tÕ#ð 
ñ #'ð	 
ñ
 Ñ+Õ,ð 
ñ 
Ñ&Õ	&ñ 
r)   c                óð   € V P                   ! V3RV/VB pVP                  pV P                  V4      pRpVe   V P                  W'V P                  4      p\        VVVP                  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).
r‰   Nr   )rI  r  r®  Úloss_functionr0   r   rò   rJ  )	rD   rH   rž  r‰   rÑ   r¤  r„  r¢  r¡  s	   &&&&,    r*   rR   Ú"BeitForImageClassification.forward°  sˆ   € ð —)’)Øñ
à%=ð
ð ñ
ˆð  ×-Ñ-ˆà—‘ Ó/ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDä$ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   )rI  r®  r–  ©NNF)r#   r$   r%   r&   r;   r   r   rR   r(   rU   rV   rW   s   @@r*   rª  rª  �  s5   ù‡ € ÷
ó 
ð Ø÷ 
ñ  
ó ó ÷ 
ð  
r)   rª  c                   óT   a a€ ] tR tRt oRV3R lV 3R llltV3R lR ltRtVtV ;t# )ÚBeitConvLayeriÕ  c                óÒ   <€ V ^8„  d   QhRS[ RS[ RS[ S[S[ S[ 3,          ,          RS[ RS[ S[S[ S[ 3,          ,          S[,          RS[RS[ S[S[ S[ 3,          ,          RS[ R	S[/	# )
r/   Úin_channelsÚout_channelsr8   r9   Úpaddingrå   ÚdilationÚgroupsÚ
activation)rn   rŸ   r"  rº   )r1   r2   s   "€r*   r3   ÚBeitConvLayer.__annotate__Ö  sœ   ø€ ÷ Zñ ZáðZñ ðZñ ™5¡¡c �?Õ*ð	Zñ
 ðZñ ‘u™S¡#˜X•Õ&©Õ,ðZñ ðZñ ™™c¡3˜h�Õ'ðZñ ðZñ ñZr)   c
                ó  <€ \         S
V `  4        \        P                  ! VVVVVVVVR 7      V n        \        P
                  ! V4      V n        V	e   \        V	,          V n	        R# \        P                  ! 4       V n	        R# ))r¹  rº  r8   r9   r»  r¼  r½  rå   N)
r:   r;   r   rA   ÚconvolutionÚBatchNorm2dÚnormalizationr	   r8  r¾  )rD   r¹  rº  r8   r9   r»  rå   r¼  r½  r¾  rE   s   &&&&&&&&&&€r*   r;   ÚBeitConvLayer.__init__Ö  si   ø€ ô 	‰ÑÔÜŸ9š9Ø#Ø%Ø#ØØØØØô	
ˆÔô  Ÿ^š^¨LÓ9ˆÔØ0:Ò0Fœ& Õ,ˆŽÌBÏKÊKËMˆŽr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rJ   )r1   r2   s   "€r*   r3   r¿  ð  s#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r)   c                ól   € V P                  V4      pV P                  V4      pV P                  V4      pV# r™   )rÁ  rÃ  r¾  r  s   &&r*   rR   ÚBeitConvLayer.forwardð  s6   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØÐr)   )r¾  rÁ  rÃ  )é   r6   r   Fr6   r6   Úrelurþ   rW   s   @@r*   r·  r·  Õ  s    ù‡ € ÷Zõ Z÷4÷ ð r)   r·  c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )ÚBeitPyramidPoolingBlocki÷  c                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r/   Ú
pool_scaler¹  ÚchannelsrI   N©rn   )r1   r2   s   "€r*   r3   Ú$BeitPyramidPoolingBlock.__annotate__ø  s/   ø€ ÷ Hñ H¡3ð H±Sð HÁCð HÈDñ Hr)   c                ó~   <€ \         SV `  4        \        P                  ! V4      V n        \        W#^R7      V n        R# )r6   ©r8   N)r:   r;   r   ÚAdaptiveAvgPool2dÚpoolingr·  Úconv)rD   rÍ  r¹  rÎ  rE   s   &&&&€r*   r;   Ú BeitPyramidPoolingBlock.__init__ø  s.   ø€ Ü‰ÑÔÜ×+Ò+¨JÓ7ˆŒÜ! +ÀQÔGˆŽ	r)   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r/   Úinputrr   rI   )rK   r   rŸ   rn   )r1   r2   s   "€r*   r3   rÐ  ý  s2   ø€ ÷ ñ ™UŸ\™\ð ±±s¹C°xµð ÁUÇ\Á\ñ r)   c                óŽ   € V P                  V4      pV P                  V4      p\        P                  P	                  W2R RR7      pV# )r¼   Frq   )rÔ  rÕ  r   r   r€   )rD   rØ  rr   Úhidden_states   &&& r*   rR   ÚBeitPyramidPoolingBlock.forwardý  s@   € Ø—|‘| EÓ*ˆØ—y‘y Ó.ˆÜ—}‘}×0Ñ0°ÈzÐinÐ0ÓoˆØÐr)   )rÕ  rÔ  rþ   rW   s   @@r*   rË  rË  ÷  s    ù‡ € ÷Hó H÷
÷ ð r)   rË  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚBeitPyramidPoolingModulei  aK  
Pyramid Pooling Module (PPM) used in PSPNet.

Args:
    pool_scales (tuple[int]): Pooling scales used in Pooling Pyramid
        Module.
    in_channels (int): Input channels.
    channels (int): Channels after modules, before conv_seg.

Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                óD   <€ V ^8„  d   QhRS[ S[R3,          RS[RS[RR/# )r/   Úpool_scales.r¹  rÎ  rI   N)rŸ   rn   )r1   r2   s   "€r*   r3   Ú%BeitPyramidPoolingModule.__annotate__  s3   ø€ ÷ 

ñ 

¡E©#¨s¨(¥Oð 

Á#ð 

ÑQTð 

ÐY]ñ 

r)   c                ó¾   <€ \         SV `  4        Wn        W n        W0n        \
        P                  ! V Uu. uF  p\        WBVR 7      NK  	  up4      V n        R# u upi ))rÍ  r¹  rÎ  N)	r:   r;   rß  r¹  rÎ  r   rn  rË  Úblocks)rD   rß  r¹  rÎ  rÍ  rE   s   &&&& €r*   r;   Ú!BeitPyramidPoolingModule.__init__  sY   ø€ Ü‰ÑÔØ&ÔØ&ÔØ ŒÜ—m’mñ #.óá"-�Jô (°:Ðai×jÙ"-ñó
ˆŽùòs   ¶Ac                ó^   <€ V ^8„  d   QhRS[ P                  RS[S[ P                  ,          /# r  )rK   r   r    )r1   r2   s   "€r*   r3   rà    s,   ø€ ÷ Sñ S¡U§\¡\ð S±d¹5¿<¹<Õ6Hñ Sr)   c                ó~   € VP                  4       R ,          pV P                   Uu. uF  q3! WR7      NK  	  up# u upi )r|  )rr   )rr   râ  )rD   rò   Úoriginal_sizeÚblocks   &&  r*   rR   Ú BeitPyramidPoolingModule.forward  s6   € Ø%×*Ñ*Ó,¨RÕ0ˆØFJÇkÂkÓRÁk¸U��m×8ÁkÑRÐRùÒRs   ¦:)râ  rÎ  r¹  rß  rT   rW   s   @@r*   rÝ  rÝ    s&   ù‡ € ñ
÷

ó 

÷S÷ Sð Sr)   rÝ  c                   óf   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltV3R lR ltR	tVt	V ;t
# )
ÚBeitUperHeadi"  zê
Unified Perceptual Parsing for Scene Understanding. This head is the implementation of
[UPerNet](https://huggingface.co/papers/1807.10221).

Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   ÚBeitUperHead.__annotate__*  s   ø€ ÷  
ñ  
™zð  
¨dñ  
r)   c           
     ó  <€ \         SV `  4        VP                  V n        VP                  .^,          V n        VP                  V n        \        P                  ! V P
                  VP                  ^R7      V n	        \        V P                  V P                  R,          V P
                  4      V n        \        V P                  R,          \        V P                  4      V P
                  ,          ,           V P
                  ^^R7      V n        \        P                  ! 4       V n        \        P                  ! 4       V n        V P                  RR  Fo  pV P                   P%                  \        W P
                  ^R7      4       V P"                  P%                  \        V P
                  V P
                  ^^R7      4       Kq  	  \        \        V P                  4      V P
                  ,          V P
                  ^^R7      V n        R# )é   rÒ  ©r8   r»  Nrz   )r:   r;   rß  rB   r¹  rÎ  r   rA   r–  r®  rÝ  Úpsp_modulesr·  ÚlenÚpsp_bottleneckrn  Úlateral_convsÚ	fpn_convsÚappendÚfpn_bottleneck)rD   r0   r¹  rE   s   && €r*   r;   ÚBeitUperHead.__init__*  s|  ø€ Ü‰ÑÔà!×-Ñ-ˆÔØ"×.Ñ.Ð/°!Õ3ˆÔØ×*Ñ*ˆŒÜŸ)š) D§M¡M°6×3DÑ3DÐRSÔTˆŒô 4Ø×ÑØ×Ñ˜RÕ Ø�M‰Mó
ˆÔô
 ,Ø×Ñ˜RÕ ¤3 t×'7Ñ'7Ó#8¸4¿=¹=Õ#HÕHØ�M‰MØØô	
ˆÔô  Ÿ]š]›_ˆÔÜŸš›ˆŒØ×+Ñ+¨C¨RÓ0ˆKØ×Ñ×%Ñ%¤m°KÇÁÐ\]Ô&^Ô_Ø�N‰N×!Ñ!¤-°·±¸t¿}¹}ÐZ[ÐefÔ"gÖhñ 1ô ,Ü�× Ñ Ó! D§M¡MÕ1Ø�M‰MØØô	
ˆÖr)   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# r  ©r    rK   r   )r1   r2   s   "€r*   r3   rì  L  s(   ø€ ÷ 1ñ 1©©e¯l©lÕ);ð 1ÁÇÁñ 1r)   c                óŠ   € VR,          p\         P                  ! V.V P                  V4      O^R7      pV P                  V4      # )r6   ru   rz   )rK   r‚   rð  rò  )rD   rò   rÚ  s   && r*   Úpsp_forwardÚBeitUperHead.psp_forwardL  sA   € Ø$ RÕ(ˆÜ—y’y ,Ð!P°×1AÑ1AÀ,Ó1OÐ!PÐVWÔXˆØ×"Ñ" <Ó0Ð0r)   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# ©r/   Úencoder_hidden_statesrI   rù  )r1   r2   s   "€r*   r3   rì  Q  s(   ø€ ÷ ñ ©T±%·,±,Õ-?ð ÁEÇLÁLñ r)   c           	     óÀ  € . p\        V P                  V4       F  w  r4VP                  V! V4      4       K  	  VP                  V P                  V4      4       \	        V4      p\        V^,
          ^ R4       Fi  pW&^,
          ,          P                  R,          pW&^,
          ,          \        P                  P                  W&,          VRRR7      ,           W&^,
          &   Kk  	  . p\        V^,
          4       F1  pVP                  V P                  V,          ! W&,          4      4       K3  	  VP                  VR,          4       \        V^,
          ^ R4       FF  p\        P                  P                  W†,          V^ ,          P                  R,          RRR7      W†&   KH  	  \        P                  ! V^R7      pV P                  V4      p	V P                  V	4      p	V	# )r6   r|  r¼   Frq   ru   rz   )Úzipró  rõ  rû  rñ  rk  rN   r   r   r€   rô  rK   r‚   rö  r®  )
rD   rÿ  ÚlateralsÚlateral_convrÚ  Úused_backbone_levelsru  Ú
prev_shapeÚfpn_outsÚoutputs
   &&        r*   rR   ÚBeitUperHead.forwardQ  s�  € àˆÜ*-¨d×.@Ñ.@ÐBWÖ*XÑ&ˆLØ�O‰O™L¨Ó6Ö7ñ +Yð 	�‰˜×(Ñ(Ð)>Ó?Ô@ô  # 8›}ÐÜÐ+¨aÕ/°°BÖ7ˆAØ! a¥%�×.Ñ.¨rÕ2ˆJØ&¨1¥u�o´·±×0IÑ0IØ• *°:ÈUð 1Jó 1õ ˆH˜•U‹Oñ 8ð ˆÜÐ+¨aÕ/Ö0ˆAØ�O‰O˜DŸN™N¨1Ö-¨h­kÓ:Ö;ñ 1ð 	�‰˜ �Ô%äÐ+¨aÕ/°°BÖ7ˆAÜŸ-™-×3Ñ3Ø• (¨1¥+×"3Ñ"3°BÕ"7¸jÐX]ð 4ó ˆH‹Kñ 8ô —9’9˜X¨1Ô-ˆØ×$Ñ$ XÓ.ˆØ—‘ Ó(ˆàˆr)   )	rÎ  r®  rö  rô  r¹  ró  rß  rò  rð  )r#   r$   r%   r&   r'   r;   rû  rR   r(   rU   rV   rW   s   @@r*   rê  rê  "  s.   ù‡ € ñ÷ 
ó  
÷D1ð 1÷
÷ ð r)   rê  c                   óX   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RtVtV ;t	# )	ÚBeitFCNHeadis  a·  
Fully Convolution Networks for Semantic Segmentation. This head is implemented of
[FCNNet](https://huggingface.co/papers/1411.4038>).

Args:
    config (BeitConfig): Configuration.
    in_channels
    kernel_size (int): The kernel size for convs in the head. Default: 3.
    dilation (int): The dilation rate for convs in the head. Default: 1.


Based on OpenMMLab's implementation, found in https://github.com/open-mmlab/mmsegmentation.
c                ó\   <€ V ^8„  d   QhRS[ RS[RS[RS[S[S[S[3,          ,          RR/# )r/   r0   Úin_indexr8   r¼  rI   N)r   rn   rŸ   )r1   r2   s   "€r*   r3   ÚBeitFCNHead.__annotate__‚  sN   ø€ ÷ !Uñ !UÙ ð!UÙ,/ð!UÙBEð!UÙUXÑ[`ÑadÑfiÐaiÕ[jÕUjð!Uà	ñ!Ur)   c                ól  <€ \         SV `  4        VP                  V n        VP                  V n        VP                  V n        VP                  V n	        W n
        V^,          V,          p\        P                  ! 4       V n        V P                  ^ 8”  d�   V P                  P                  \        V P                  V P
                  W5VR7      4       \!        V P                  ^,
          4       F@  pV P                  P                  \        V P
                  V P
                  VVVR7      4       KB  	  V P                  '       d@   \        V P                  V P
                  ,           V P
                  W3^,          R7      V n        \        P$                  ! V P
                  VP&                  ^R7      V n        R# )r/   )r8   r»  r¼  rï  rÒ  N)r:   r;   rB   r¹  Úauxiliary_channelsrÎ  Úauxiliary_num_convsÚ	num_convsÚauxiliary_concat_inputÚconcat_inputr  r   rn  Úconvsrõ  r·  rk  Úconv_catrA   r–  r®  )rD   r0   r  r8   r¼  Úconv_paddingr’   rE   s   &&&&&  €r*   r;   ÚBeitFCNHead.__init__‚  sG  ø€ ô 	‰ÑÔØ!×-Ñ-ˆÔØ×1Ñ1ˆŒØ×3Ñ3ˆŒØ"×9Ñ9ˆÔØ Œà# qÕ(¨HÕ4ˆÜ—]’]“_ˆŒ
Ø�>‰>˜AÔØ�J‰J×ÑÜØ×$Ñ$ d§m¡mÀÐmuôôô
 ˜4Ÿ>™>¨AÕ-Ö.�Ø—
‘
×!Ñ!Ü!ØŸ™ØŸ™Ø$/Ø ,Ø!)ôöñ /ð ××ÐÜ)Ø× Ñ  4§=¡=Õ0°$·-±-È[ÐqrÕbrôˆDŒMô Ÿ)š) D§M¡M°6×3DÑ3DÐRSÔTˆŽr)   c                ó^   <€ V ^8„  d   QhRS[ S[P                  ,          RS[P                  /# rþ  rù  )r1   r2   s   "€r*   r3   r  ¥  s(   ø€ ÷ ñ ©T±%·,±,Õ-?ð ÁEÇLÁLñ r)   c                óú   € WP                   ,          pTpV P                   F  pV! V4      pK  	  V P                  '       d)   V P                  \        P
                  ! W#.^R7      4      pV P                  V4      pV# )r6   ru   )r  r  r  r  rK   r‚   r®  )rD   rÿ  rD  rò   rÕ  s   &&   r*   rR   ÚBeitFCNHead.forward¥  sh   € Ø(¯©Õ7ˆØ ˆØ—J”JˆDÙ  Ó/ŠMñ à××ÐØ ŸM™M¬%¯)ª)°XÐ4MÐSTÔ*UÓVˆMØŸ™¨Ó6ˆØÐr)   )rÎ  r®  r  r  r  r¹  r  r  )r/   rÈ  r6   rT   rW   s   @@r*   r
  r
  s  s&   ù‡ € ñ÷!Uõ !U÷F÷ ð r)   r
  c                   óX   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RtVtV ;t	# )	ÚBeitFPNUpBlocki°  uE   4x upsampling block: ConvTranspose â†’ BN â†’ GELU â†’ ConvTranspose.c                ó0   <€ V ^8„  d   QhRS[ RS[ RS[ RR/# )r/   rB   r8   r9   rI   NrÏ  )r1   r2   s   "€r*   r3   ÚBeitFPNUpBlock.__annotate__³  s0   ø€ ÷ tñ t¡Cð t±cð tÁsð tÐSWñ tr)   c                ó  <€ \         SV `  4        \        P                  ! WW#R 7      V n        \        P
                  ! V4      V n        \        P                  ! 4       V n        \        P                  ! WW#R 7      V n	        R# )r7   N)
r:   r;   r   ÚConvTranspose2dÚconv_transpose1rÂ  rÃ  ÚGELUr¾  Úconv_transpose2)rD   rB   r8   r9   rE   s   &&&&€r*   r;   ÚBeitFPNUpBlock.__init__³  sX   ø€ Ü‰ÑÔÜ!×1Ò1°+ÐXcÔsˆÔÜŸ^š^¨KÓ8ˆÔÜŸ'š'›)ˆŒÜ!×1Ò1°+ÐXcÔsˆÖr)   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r  rJ   )r1   r2   s   "€r*   r3   r  º  r  r)   c                óŽ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV# r™   )r!  rÃ  r¾  r#  r  s   &&r*   rR   ÚBeitFPNUpBlock.forwardº  sF   € Ø×,Ñ,¨]Ó;ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØ×,Ñ,¨]Ó;ˆØÐr)   )r¾  r!  r#  rÃ  )r/   r/   rT   rW   s   @@r*   r  r  °  s#   ù‡ € ÙO÷tõ t÷÷ ð r)   r  c                   óT   a a€ ] tR tRt oRtV3R lV 3R lltV3R lR ltRtVtV ;t	# )ÚBeitFPNNeckiÂ  z˜
4-level feature pyramid neck for BeiT. Produces x4 upsample, x2 upsample,
identity, and x2 downsample outputs from the four selected ViT feature maps.
c                ó    <€ V ^8„  d   QhRS[ /# r.   r   )r1   r2   s   "€r*   r3   ÚBeitFPNNeck.__annotate__È  s   ø€ ÷ :ñ :™zñ :r)   c                óø   <€ \         SV `  4        \        VP                  4      V n        \
        P                  ! VP                  VP                  ^^R7      V n        \
        P                  ! ^^R7      V n	        R# )r/   r7   N)
r:   r;   r  rB   Úfpn1r   r   Úfpn2Ú	MaxPool2dÚfpn4rï   s   &&€r*   r;   ÚBeitFPNNeck.__init__È  sX   ø€ Ü‰ÑÔÜ" 6×#5Ñ#5Ó6ˆŒ	Ü×&Ò& v×'9Ñ'9¸6×;MÑ;MÐ[\ÐefÔgˆŒ	Ü—L’L¨Q°qÔ9ˆŽ	r)   c                óv   <€ V ^8„  d   QhRS[ S[P                  R3,          RS[ S[P                  R3,          /# )r/   Úfeature_maps.rI   )rŸ   rK   r   )r1   r2   s   "€r*   r3   r+  Î  s8   ø€ ÷ 
ñ 
¡E©%¯,©,¸Ð*;Õ$<ð 
ÁÁuÇ|Á|ÐUXÐGXÕAYñ 
r)   c                ó    € V P                  V^ ,          4      V P                  V^,          4      V^,          V P                  V^,          4      3# )r   ©r-  r.  r0  )rD   r3  s   &&r*   rR   ÚBeitFPNNeck.forwardÎ  sC   € à�I‰I�l 1•oÓ&Ø�I‰I�l 1•oÓ&Ø˜�OØ�I‰I�l 1•oÓ&ð	
ð 	
r)   r5  rT   rW   s   @@r*   r)  r)  Â  s#   ù‡ € ñ÷
:ó :÷
÷ 
ð 
r)   r)  c                   ór   a a€ ] tR tRt oV3R lV 3R llt]]]RV3R lR ll4       4       4       tRt	Vt
V ;t# )ÚBeitForSemanticSegmentationi×  c                ó$   <€ V ^8„  d   QhRS[ RR/# r[   r   )r1   r2   s   "€r*   r3   Ú(BeitForSemanticSegmentation.__annotate__Ù  s   ø€ ÷ ñ ™zð ¨dñ r)   c                ór  <€ \         SV `  V4       VP                  V n        \        VR R7      V n        \        V P                  P                  4      ^8w  d   \        R4      h\        V4      V n
        \        V4      V n        VP                  '       d   \        V4      MRV n        V P!                  4        R# )Fr•  zÇBeitForSemanticSegmentation requires config.out_indices to be a list of 4 integers, specifying which features to use from the backbone. One can use [3, 5, 7, 11] in case of a base-sized architecture.N)r:   r;   r–  rd  rI  rñ  r0   Úout_indicesrO   r)  Úfpnrê  Údecode_headÚuse_auxiliary_headr
  Úauxiliary_headrt  rï   s   &&€r*   r;   Ú$BeitForSemanticSegmentation.__init__Ù  s˜   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ˜f¸Ô>ˆŒ	äˆt�{‰{×&Ñ&Ó'¨1Ô,Üð-óð ô
 ˜vÓ&ˆŒô (¨Ó/ˆÔØ5;×5N×5NÐ5Nœk¨&Ô1ÐTXˆÔð 	�‰Ör)   c                óœ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[S[,          /# r±  )rK   r   rº   r   r   rŸ   r   )r1   r2   s   "€r*   r3   r:  ñ  sb   ø€ ÷ G
ñ G
á—l‘l TÕ)ðG
ñ —‘˜tÕ#ðG
ñ #'ð	G
ñ
 Ñ+Õ,ðG
ñ 
Ñ(Õ	(ñG
r)   c                óD  aaaa€ Ve'   V P                   P                  ^8X  d   \        R4      hV P                  ! V3RV/VB pVP                  oVP
                  w  orgpWpP                   P                  ,          oW€P                   P                  ,          o\        ;QJ d.    . VVVV3R lV P                   P                   4       F  NK  	  5M'! VVVV3R lV P                   P                   4       4      p	V P                  V	4      p	V P                  V	4      p
RpV P                  e   V P                  V	4      pRpVe?   V P                  V
VV P                   P                  VV P                   P                  R7      p\        VV
VP                  VP                   R7      # )a¼  
labels (`torch.LongTensor` of shape `(batch_size, height, width)`, *optional*):
    Ground truth semantic segmentation maps for computing the loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels > 1`, a classification loss is computed (Cross-Entropy).

Examples:

```python
>>> from transformers import AutoImageProcessor, BeitForSemanticSegmentation
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/beit-base-finetuned-ade-640-640")
>>> model = BeitForSemanticSegmentation.from_pretrained("microsoft/beit-base-finetuned-ade-640-640")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> # logits are of shape (batch_size, num_labels, height, width)
>>> logits = outputs.logits
```Nz/The number of labels should be greater than oner‰   c              3   ó–   <"  € T F>  pSV^,
          ,          R,          P                  ^^4      P                  SRSS4      x € K@  	  R# 5i)r6   Nrx   rz   )rQ   r}   )Ú.0ru  r“   rÿ  Úpatch_heightÚpatch_widths   & €€€€r*   Ú	<genexpr>Ú6BeitForSemanticSegmentation.forward.<locals>.<genexpr>  sJ   øé € ð 
á,�ð " ! a¥%Õ(¨Õ/×9Ñ9¸!¸QÓ?×GÑGÈ
ÐTVÐXdÐfq×rÐrÛ,ùs   ƒAA	)Úignore_indexÚauxiliary_logitsÚauxiliary_loss_weightr   )r0   r–  rO   rI  rò   rN   r=   rŸ   r<  r=  r>  r@  r³  Úsemantic_loss_ignore_indexrL  r   rJ  )rD   rH   rž  r‰   rÑ   r¤  r’   rl   rm   r3  r¢  rK  r¡  r“   rÿ  rF  rG  s   &&&&,        @@@@r*   rR   Ú#BeitForSemanticSegmentation.forwardî  s}  û€ ðB Ò $§+¡+×"8Ñ"8¸AÔ"=ÜÐNÓOÐOØ—)’)Øñ
à%=ð
ð ñ
ˆð !(× 5Ñ 5ÐØ'3×'9Ñ'9Ñ$ˆ
�A˜uØ§¡×!7Ñ!7Õ7ˆØŸ{™{×5Ñ5Õ5ˆ÷ ”u÷ 
à—[‘[×,Ò,ó
—u‘u÷ 
à—[‘[×,Ò,ó
ó 
ˆð —x‘x Ó-ˆà×!Ñ! ,Ó/ˆàÐØ×ÑÒ*Ø#×2Ñ2°<Ó@ÐàˆØÒØ×%Ñ%ØØØ!Ÿ[™[×CÑCØ!1Ø&*§k¡k×&GÑ&Gð &ó ˆDô 'ØØØ!×/Ñ/Ø×)Ñ)ô	
ð 	
r)   )r@  rI  r>  r=  r–  rµ  ©r#   r$   r%   r&   r;   r   r   r   rR   r(   rU   rV   rW   s   @@r*   r8  r8  ×  sA   ù‡ € ÷ó ð* Ø Ø÷G
ñ G
ó ó !ó ÷G
ð G
r)   r8  zM
    BEiT backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ób   a a€ ] tR tRt oV 3R lt]]]V3R lR l4       4       4       tRt	Vt
V ;t# )ÚBeitBackbonei;  c                óV  <€ \         SV `  V4       \        VP                  ^,           4       Uu. uF  q!P                  NK  	  upV n        \        VRR7      V n        VP                  '       d   \        V4      M\        P                  ! 4       V n        V P                  4        R# u upi )r6   Fr•  N)r:   r;   rk  rl  rB   Únum_featuresrd  rI  Úadd_fpnr)  r   r8  r=  rt  )rD   r0   r’   rE   s   && €r*   r;   ÚBeitBackbone.__init__A  sz   ø€ Ü‰Ñ˜Ô ä9>¸v×?WÑ?WÐZ[Õ?[Ô9\Ó]Ñ9\°A×/Ô/Ñ9\Ñ]ˆÔÜ˜f¸Ô>ˆŒ	Ø*0¯.¯.¨.”;˜vÔ&¼b¿kºk»mˆŒð 	�‰Öùò ^s   ¯B&c                ó<   <€ V ^8„  d   QhRS[ RS[S[,          RS[/# )r/   rH   rÑ   rI   )r   r   r   r   )r1   r2   s   "€r*   r3   ÚBeitBackbone.__annotate__N  s/   ø€ ÷ 3
ñ 3
áð3
ñ Ñ+Õ,ð3
ñ 
ñ	3
r)   c                ó@  € VP                   w  r4rVWPP                  P                  ,          pW`P                  P                  ,          pV P                  ! V3/ VB p	V	P                  p
Rp\        V P                  V
4       Fj  w  rÍWÀP                  9   g   K  V P                  P                  '       d/   VR,          pVP                  ^^4      pVP                  VRWx4      pW½3,          pKl  	  V P                  V4      p\        VV	P                  V	P                  R7      # )aª  
Examples:

```python
>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import requests

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> processor = AutoImageProcessor.from_pretrained("microsoft/beit-base-patch16-224")
>>> model = AutoBackbone.from_pretrained(
...     "microsoft/beit-base-patch16-224", out_features=["stage1", "stage2", "stage3", "stage4"]
... )

>>> inputs = processor(image, return_tensors="pt")

>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 14, 14]
```)r3  rò   rJ  r"   r�  rz   )rN   r0   r=   rI  rò   r  Ústage_namesÚout_featuresÚreshape_hidden_statesrQ   r}   r=  r   rJ  )rD   rH   rÑ   r“   r’   rl   rm   rF  rG  r¤  rò   r3  ÚstagerÚ  s   &&,           r*   rR   ÚBeitBackbone.forwardK  sÿ   € ð@ (4×'9Ñ'9Ñ$ˆ
�vØ§¡×!7Ñ!7Õ7ˆØŸ{™{×5Ñ5Õ5ˆØ—)’)˜LÑ3¨FÑ3ˆà×-Ñ-ˆØˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Ö)Ø—;‘;×4×4Ð4Ø#/°Õ#9�LØ#/×#9Ñ#9¸!¸QÓ#?�LØ#/×#7Ñ#7¸
ÀBÈÓ#b�Là Õ/’ñ $Hð —x‘x Ó-ˆäØ%Ø!×/Ñ/Ø×)Ñ)ô
ð 	
r)   )rI  r=  rS  rO  rW   s   @@r*   rQ  rQ  ;  s3   ù‡ € õð Ø Ø÷3
ó ó !ó ÷3
ð 3
r)   rQ  )Nrô   )rª  r‘  r8  rd  rH  rQ  )EÚcollections.abcr   r   Údataclassesr   rK   r   r   Ú r   rM  Úactivationsr	   Úbackbone_utilsr
   r   Úmasking_utilsr   Úmodeling_layersr   Úmodeling_outputsr   r   r   r   r   Úmodeling_utilsr   r   Úprocessing_utilsr   Úpytorch_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_beitr   r!   rÒ   r,   rY   r›   rÞ   rà   r   r  r*  rH  rd  rr  r‘  rª  r·  rË  rÝ  rê  r
  r  r)  r8  rQ  Ú__all__r"   r)   r*   Ú<module>rn     sb  ð÷* /Ý !ã ß å &Ý !ß HÝ 6Ý 9÷õ ÷ GÝ &Ý @ß BÑ Bß IÝ 5Ý *ñ ðôð
 ôÐ!;ó ó óðôH˜"Ÿ)™)ô Hô<S�R—Y‘Yô SôlV3˜rŸy™yô V3÷r%ô8-)�B—I‘Iô -)ô`ˆb�i‰iô ô %�2—9‘9ô %ô0<Ð*ô <ð~ ô"T˜/ó "Tó ð"TðJ ôJjÐ#ó Jjó ðJjôZ	v�—‘ô 	vñ ðôôS
Ð!4ó S
óðS
ñl ðôô/
Ð!4ó /
óð/
ôd�B—I‘Iô ôD
˜bŸi™iô 
ôS˜rŸy™yô Sô<N�2—9‘9ô Nôb:�"—)‘)ô :ôz�R—Y‘Yô ô$
�"—)‘)ô 
ð* ô`
Ð"5ó `
ó ð`
ñF ðôô
A
�=Ð"5ó A
óð
A
òH‚r)   