+
    œ°³j�Ä  ã                   ó  € ^ RI t^ RIt^ RI Ht ^ RIHt ^ RIt^ RI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 ^RIHt ^RIHtHtHtHt ^RIHtH t  ^RI!H"t"H#t# ^RI$H%t%  ! R R]PL                  4      t']! RR7      ] ! R R]4      4       4       t(]! RR7      ] ! R R]4      4       4       t)]! RR7      ] ! R R]4      4       4       t*]! RR7      ] ! R R]4      4       4       t+ ! R R ]PL                  4      t, ! R! R"]PL                  4      t- ! R# R$]PL                  4      t. ! R% R&]PL                  4      t/RBR' R( llt0 ! R) R*]PL                  4      t1 ! R+ R,]PL                  4      t2R- t3R. t4 ! R/ R0]4      t5 ! R1 R2]4      t6] ! R3 R4]4      4       t7 ! R5 R6]74      t8] ! R7 R8]74      4       t9]! R9R7       ! R: R;]74      4       t:]! R<R7       ! R= R>]74      4       t;]! R?R7       ! R@ RA]]74      4       t<. RCOt=R# )Dé    N)ÚCallable)Ú	dataclass)Únn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutput)ÚALL_ATTENTION_FUNCTIONSÚPreTrainedModel)ÚUnpack)ÚModelOutputÚTransformersKwargsÚauto_docstringÚ	torch_int)Úcan_return_tupleÚmerge_with_config_defaults)ÚOutputRecorderÚcapture_outputs©Ú
SwinConfigc                   ój   a a€ ] tR t^*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
# )
ÚSwinDropPathzÃ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/# )é   Ú	drop_probÚreturnN)Úfloat)ÚformatÚ__classdict__s   "€Úg/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/swin/modeling_swin.pyÚ__annotate__ÚSwinDropPath.__annotate__1   s   ø€ ÷ #ñ #¡%ð #°$ñ #ó    c                ó0   <€ \         SV `  4        Wn        R # ©N)ÚsuperÚ__init__r   )Úselfr   Ú	__class__s   &&€r"   r)   ÚSwinDropPath.__init__1   s   ø€ Ü‰ÑÔØ"Žr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   Úhidden_statesr   ©ÚtorchÚTensor)r    r!   s   "€r"   r#   r$   5   s#   ø€ ÷ <ñ <¡U§\¡\ð <±e·l±lñ <r%   c                ó˜  € V P                   R 8X  g   V P                  '       g   V# ^V P                   ,
          pVP                  ^ ,          3RVP                  ^,
          ,          ,           p\        P
                  ! W1P                  VP                  R7      p\        P                  ! WB,           4      pVP                  V4      V,          # )ç        ©ÚdtypeÚdevice)é   )
r   ÚtrainingÚshapeÚndimr1   Úrandr6   r7   ÚfloorÚdiv)r*   r/   Ú	keep_probr:   Úrandom_tensors   &&   r"   ÚforwardÚSwinDropPath.forward5   s•   € Ø�>‰>˜SÔ ¨¯¯¨Ø Ð Ø˜Ÿ™Õ&ˆ	Ø×$Ñ$ QÕ'Ð)¨D°M×4FÑ4FÈÕ4JÕ,KÕKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÔaˆÜŸš MÕ$=Ó>ˆØ× Ñ  Ó+¨mÕ;Ð;r%   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   )Ústr)r    r!   s   "€r"   r#   r$   >   s   ø€ ÷ %ñ %™Cñ %r%   c                ó    € R V P                    2# )zp=©r   )r*   s   &r"   Ú
extra_reprÚSwinDropPath.extra_repr>   s   € Ø�D—N‘NÐ#Ð$Ð$r%   rG   )r4   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r)   rA   rH   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r+   r!   s   @@r"   r   r   *   s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r%   r   zN
    Swin encoder's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   ó@   a € ] tR t^Bt o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚSwinEncoderOutputaÕ  
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, hidden_size, height, width)`.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚlast_hidden_state.r/   Ú
attentionsÚreshaped_hidden_states©r1   ÚFloatTensorÚtuple)r    r!   s   "€r"   r#   ÚSwinEncoderOutput.__annotate__B   sƒ   ø‡ ‚ ñ  ×(Ñ(¨4Õ/Ñ6ñ! ñ" ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ# ñ$ ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ% ñ& "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò' r%   © )rJ   rK   rL   rM   rN   rW   r/   rX   rY   Ú__annotate_func__rO   rP   ©r!   s   @r"   rU   rU   B   s)   ø‡ € ñð 37ÐØ:>€MØ7;€JØCGÐ÷' ƒ r%   rU   zV
    Swin model's outputs that also contains a pooling of the last hidden states.
    c                   óD   a € ] tR t^Xt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSwinModelOutputa‘  
pooler_output (`torch.FloatTensor` of shape `(batch_size, hidden_size)`, *optional*, returned when `add_pooling_layer=True` is passed):
    Average pooling of the last layer hidden-state.
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, hidden_size, height, width)`.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó<  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NrW   Úpooler_output.r/   rX   rY   rZ   )r    r!   s   "€r"   r#   ÚSwinModelOutput.__annotate__X   s›   ø‡ ‚ ñ$ ×(Ñ(¨4Õ/Ñ6ñ% ñ& ×$Ñ$ tÕ+Ñ2ñ' ñ( ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ) ñ* ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ+ ñ, "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò- r%   r^   )rJ   rK   rL   rM   rN   rW   rd   r/   rX   rY   r_   rO   rP   r`   s   @r"   rb   rb   X   s.   ø‡ € ñ	ð 37ÐØ.2€MØ:>€MØ7;€JØCGÐ÷- ƒ r%   rb   z*
    Swin masked image model outputs.
    c                   óD   a € ] tR t^qt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSwinMaskedImageModelingOutputaÛ  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `bool_masked_pos` is provided):
    Masked image modeling (MLM) loss.
reconstruction (`torch.FloatTensor` of shape `(batch_size, num_channels, height, width)`):
    Reconstructed pixel values.
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, hidden_size, height, width)`.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó<  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   NÚlossÚreconstruction.r/   rX   rY   rZ   )r    r!   s   "€r"   r#   Ú*SwinMaskedImageModelingOutput.__annotate__q   s›   ø‡ ‚ ñ( ×
Ñ
˜dÕ
"Ñ)ñ) ñ* ×%Ñ%¨Õ,Ñ3ñ+ ñ, ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ- ñ. ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ/ ñ0 "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò1 r%   r^   )rJ   rK   rL   rM   rN   ri   rj   r/   rX   rY   r_   rO   rP   r`   s   @r"   rg   rg   q   s-   ø‡ € ñð &*€DØ/3€NØ:>€MØ7;€JØCGÐ÷1 ƒ r%   rg   z0
    Swin outputs for image classification.
    c                   óD   a € ] tR t^Œt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSwinImageClassifierOutputa  
loss (`torch.FloatTensor` of shape `(1,)`, *optional*, returned when `labels` is provided):
    Classification (or regression if config.num_labels==1) loss.
logits (`torch.FloatTensor` of shape `(batch_size, config.num_labels)`):
    Classification (or regression if config.num_labels==1) scores (before SoftMax).
reshaped_hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
    Tuple of `torch.FloatTensor` (one for the output of the embeddings + one for the output of each stage) of
    shape `(batch_size, hidden_size, height, width)`.

    Hidden-states of the model at the output of each layer plus the initial embedding outputs reshaped to
    include the spatial dimensions.
Nc                ó<  <€ V ^8„  d   Qh/ S[ P                  R,          ;R&   S[ P                  R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   S[S[ P                  R3,          R,          ;R&   # )r   Nri   Úlogits.r/   rX   rY   rZ   )r    r!   s   "€r"   r#   Ú&SwinImageClassifierOutput.__annotate__Œ   s›   ø‡ ‚ ñ( ×
Ñ
˜dÕ
"Ñ)ñ) ñ* ×Ñ Õ$Ñ+ñ+ ñ, ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ- ñ. ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ/ ñ0 "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò1 r%   r^   )rJ   rK   rL   rM   rN   ri   ro   r/   rX   rY   r_   rO   rP   r`   s   @r"   rm   rm   Œ   s-   ø‡ € ñð &*€DØ'+€FØ:>€MØ7;€JØCGÐ÷1 ƒ r%   rm   c                   ób   a a€ ] tR t^§t oRtR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
# )
ÚSwinEmbeddingszO
Construct the patch and position embeddings. Optionally, also the mask token.
c                óŽ  <€ \         SV `  4        \        V4      V n        V P                  P                  pV P                  P
                  V n        V'       d7   \        P                  ! \        P                  ! ^^VP                  4      4      MRV n        VP                  '       d6   \        P                  ! \        P                  ! ^W1P                  4      4      MRV n        \        P                  ! VP                  4      V n        \        P"                  ! VP$                  4      V n        VP(                  V n        Wn        R# )r8   N)r(   r)   ÚSwinPatchEmbeddingsÚpatch_embeddingsÚnum_patchesÚ	grid_sizeÚ
patch_gridr   Ú	Parameterr1   ÚzerosÚ	embed_dimÚ
mask_tokenÚuse_absolute_embeddingsÚposition_embeddingsÚ	LayerNormÚnormÚDropoutÚhidden_dropout_probÚdropoutÚ
patch_sizeÚconfig)r*   r…   Úuse_mask_tokenrv   r+   s   &&& €r"   r)   ÚSwinEmbeddings.__init__¬   sÞ   ø€ Ü‰ÑÔä 3°FÓ ;ˆÔØ×+Ñ+×7Ñ7ˆØ×/Ñ/×9Ñ9ˆŒßO]œ"Ÿ,š,¤u§{¢{°1°a¸×9IÑ9IÓ'JÔKÐcgˆŒð LR×Ki×KiÐKiŒB�LŠLœŸš Q¨×5EÑ5EÓFÔGÐosð 	Ô ô —L’L ×!1Ñ!1Ó2ˆŒ	Ü—z’z &×"<Ñ"<Ó=ˆŒØ ×+Ñ+ˆŒØŽr%   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Ú
embeddingsÚheightÚwidthr   ©r1   r2   Úint)r    r!   s   "€r"   r#   ÚSwinEmbeddings.__annotate__½   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W P
                  ,          pW0P
                  ,          p\        VR,          4      p	V P                  P                  ^W™V4      p
V
P                  ^ ^^^4      p
\        P                  P                  V
Wx3RRR7      p
V
P                  ^ ^^^4      P                  ^RV4      # )z´
Interpolate pre-trained position encodings to support higher-resolution images at inference.
Unlike ViT, Swin has no CLS token, so position embeddings cover patch positions only.
ç      à?ÚbicubicF)ÚsizeÚmodeÚalign_cornerséÿÿÿÿ)r:   r~   r1   ÚjitÚ
is_tracingr„   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolateÚview)r*   r‰   rŠ   r‹   rv   Únum_positionsÚdimÚ
new_heightÚ	new_widthÚsqrt_num_positionsÚpatch_pos_embeds   &&&&       r"   Úinterpolate_pos_encodingÚ'SwinEmbeddings.interpolate_pos_encoding½   s  € ð
 !×&Ñ& qÕ)ˆØ×0Ñ0×6Ñ6°qÕ9ˆô �y‰y×#Ñ#×%Ò%¨+Ô*FÈ6Ì?Ø×+Ñ+Ð+à×Ñ˜rÕ"ˆàŸ™Õ.ˆ
ØŸ_™_Õ,ˆ	ä& }°cÕ'9Ó:ÐØ×2Ñ2×:Ñ:¸1Ð>PÐfiÓjˆØ)×1Ñ1°!°Q¸¸1Ó=ˆäŸ-™-×3Ñ3ØØÐ(ØØð	 4ó 
ˆð ×&Ñ& q¨!¨Q°Ó2×7Ñ7¸¸2¸sÓCÐCr%   c          	      óš   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[ P
                  ,          /# )r   Úpixel_valuesNÚbool_masked_posr£   r   )r1   r[   Ú
BoolTensorÚboolr\   r2   )r    r!   s   "€r"   r#   rŽ   Û   sR   ø€ ÷ -ñ -á×'Ñ'¨$Õ.ð-ñ ×)Ñ)¨DÕ0ð-ñ #'ð	-ñ
 
‰u�|‰|Õ	ñ-r%   c                óò  € VP                   w  rErgV P                  V4      w  r‰V P                  V4      pVP                  4       w  r«pVeZ   V P                  P                  W«R4      pVP                  R4      P                  V4      pVRV,
          ,          WÍ,          ,           pV P                  e4   V'       d   W€P                  W†V4      ,           pMW€P                  ,           pV P                  V4      pW‰3# )Ng      ð?r•   )r:   ru   r€   r’   r|   ÚexpandÚ	unsqueezeÚtype_asr~   r£   rƒ   )r*   r¦   r§   r£   Ú_Únum_channelsrŠ   r‹   r‰   Úoutput_dimensionsÚ
batch_sizeÚseq_lenÚmask_tokensÚmasks   &&&&          r"   rA   ÚSwinEmbeddings.forwardÛ   sÝ   € ð *6×);Ñ);Ñ&ˆ˜Ø(,×(=Ñ(=¸lÓ(KÑ%ˆ
Ø—Y‘Y˜zÓ*ˆ
Ø!+§¡Ó!2Ñˆ
˜QàÒ&ØŸ/™/×0Ñ0°ÀbÓIˆKà"×,Ñ,¨RÓ0×8Ñ8¸ÓEˆDØ# s¨T¥zÕ2°[Õ5GÕGˆJà×#Ñ#Ò/ß'Ø'×*GÑ*GÈ
Ð\aÓ*bÕb‘
à'×*BÑ*BÕB�
à—\‘\ *Ó-ˆ
àÐ,Ð,r%   )r…   rƒ   r|   r€   ru   rx   r„   r~   ©F)NF)rJ   rK   rL   rM   rN   r)   r£   rA   rO   rP   rQ   rR   s   @@r"   rr   rr   §   s*   ù‡ € ñ÷÷"Dð D÷<-÷ -ò -r%   rr   c                   óN   a a€ ] tR t^÷t oRtV 3R ltR tV3R lR ltRtVt	V ;t
# )rt   zÜ
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                óZ  <€ \         SV `  4        VP                  VP                  r2VP                  VP
                  rT\        V\        P                  P                  4      '       d   TMW"3p\        V\        P                  P                  4      '       d   TMW33pV^,          V^,          ,          V^ ,          V^ ,          ,          ,          pW0n        W`n
        V^ ,          V^ ,          ,          V^,          V^,          ,          3V n        \        P                  ! WEW3R7      V n        R# )r8   )Úkernel_sizeÚstrideN)r(   r)   Ú
image_sizer„   r¯   r{   Ú
isinstanceÚcollectionsÚabcÚIterablerv   rw   r   ÚConv2dÚ
projection)r*   r…   r»   r„   r¯   Úhidden_sizerv   r+   s   &&     €r"   r)   ÚSwinPatchEmbeddings.__init__þ   sß   ø€ Ü‰ÑÔØ!'×!2Ñ!2°F×4EÑ4E�JØ$*×$7Ñ$7¸×9IÑ9I�kÜ#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ü#-¨j¼+¿/¹/×:RÑ:R×#SÒ#S‘ZÐZdÐYqˆ
Ø! !•}¨
°1­Õ5¸*ÀQ½-È:ÐVWÍ=Õ:XÕYˆØ$ŒØ&ÔØ$ Q�-¨:°a­=Õ8¸*ÀQ½-È:ÐVWÍ=Õ:XÐYˆŒäŸ)š) LÈ:ÔiˆŽr%   c                óÊ  € W0P                   ^,          ,          ^ 8w  dS   ^ V P                   ^,          W0P                   ^,          ,          ,
          3p\        P                  P                  W4      pW P                   ^ ,          ,          ^ 8w  dU   ^ ^ ^ V P                   ^ ,          W P                   ^ ,          ,          ,
          3p\        P                  P                  W4      pV# )z9Pad pixel_values to be divisible by patch_size if needed.)r„   r   rš   Úpad)r*   r¦   rŠ   r‹   Ú
pad_valuess   &&&& r"   Ú	maybe_padÚSwinPatchEmbeddings.maybe_pad  s¥   € à—?‘? 1Õ%Õ%¨Ô*Ø˜TŸ_™_¨QÕ/°%¿/¹/È!Õ:LÕ2LÕLÐMˆJÜŸ=™=×,Ñ,¨\ÓFˆLØ—O‘O AÕ&Õ&¨!Ô+Ø˜Q  4§?¡?°1Õ#5¸ÇÁÐQRÕASÕ8SÕ#SÐTˆJÜŸ=™=×,Ñ,¨\ÓFˆLØÐr%   c                ó‚   <€ V ^8„  d   QhRS[ P                  R,          RS[S[ P                  S[S[,          3,          /# )r   r¦   Nr   )r1   r[   r\   r2   r�   )r    r!   s   "€r"   r#   Ú SwinPatchEmbeddings.__annotate__  s;   ø€ ÷ 	-ñ 	-¡E×$5Ñ$5¸Õ$<ð 	-ÁÁuÇ|Á|ÑUZÑ[^ÕU_ÐG_ÕA`ñ 	-r%   c                óÔ   € VP                   w  r#rEV P                  WV4      pV P                  V4      pVP                   w   r$pWE3pVP                  ^4      P	                  ^^4      pWg3# )r   )r:   rÇ   rÁ   ÚflattenÚ	transpose)r*   r¦   r®   r¯   rŠ   r‹   r‰   r°   s   &&      r"   rA   ÚSwinPatchEmbeddings.forward  sp   € Ø)5×);Ñ);Ñ&ˆ˜à—~‘~ l¸EÓBˆØ—_‘_ \Ó2ˆ
Ø(×.Ñ.Ñˆˆ1�eØ#˜OÐØ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
àÐ,Ð,r%   )rw   rv   r„   rÁ   ©rJ   rK   rL   rM   rN   r)   rÇ   rA   rO   rP   rQ   rR   s   @@r"   rt   rt   ÷   s$   ù‡ € ñõjò÷	-÷ 	-ð 	-r%   rt   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
# )
ÚSwinPatchMergingi!  zP
Patch Merging Layer.

Args:
    dim (`int`):
        Number of input channels.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r   rž   r   N)r�   )r    r!   s   "€r"   r#   ÚSwinPatchMerging.__annotate__*  s   ø€ ÷ *ñ *™Cð * Dñ *r%   c                óÀ   <€ \         SV `  4        \        P                  ! ^V,          ^V,          RR7      V n        \        P
                  ! ^V,          4      V n        R# )é   F©ÚbiasN)r(   r)   r   ÚLinearÚ	reductionr   r€   )r*   rž   r+   s   &&€r"   r)   ÚSwinPatchMerging.__init__*  s>   ø€ Ü‰ÑÔÜŸš 1 s¥7¨A°­G¸%Ô@ˆŒÜ—L’L  S¥Ó)ˆŽ	r%   c                óZ   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[ P                  /# )r   Úinput_featurerŠ   r‹   r   rŒ   )r    r!   s   "€r"   r#   rÓ   /  s4   ø€ ÷ ñ ¡u§|¡|ð ¹Sð Éð ÑQV×Q]ÑQ]ñ r%   c           
     ó¦   € V^,          ^8X  g   V^,          ^8X  d5   \         P                  P                  V^ ^ ^ V^,          ^ V^,          34      pV# )zPPad input feature map to be divisible by 2 in both spatial dimensions if needed.)r   rš   rÅ   )r*   rÜ   rŠ   r‹   s   &&&&r"   rÇ   ÚSwinPatchMerging.maybe_pad/  sL   € à�Q�J˜!ŒO ¨¥¨a¤ÜŸM™M×-Ñ-¨m¸aÀÀAÀuÈqÅyÐRSÐU[Ð^_ÕU_Ð=`ÓaˆMØÐr%   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r   rÜ   Úinput_dimensionsr   )r1   r2   r\   r�   )r    r!   s   "€r"   r#   rÓ   5  s6   ø€ ÷ ñ ¡U§\¡\ð ÁUÉ3ÑPSÈ8Å_ð ÑY^×YeÑYeñ r%   c                ó¢  € Vw  r4VP                   w  rVpVP                  WSWG4      pV P                  WV4      p\        P                  ! \        ^4       UU	u. uF'  p\        ^4       F  q‘RV	R^1VR^1R3,          NK  	  K)  	  up	pRR7      pVP                  VR^V,          4      pV P                  V4      pV P                  V4      pV# u up	pi )r   ºNNNN©rž   r•   )r:   rœ   rÇ   r1   ÚcatÚranger€   rÙ   )
r*   rÜ   rà   rŠ   r‹   r±   rž   r¯   ÚcolÚrows
   &&&       r"   rA   ÚSwinPatchMerging.forward5  sÑ   € Ø(‰ˆà(5×(;Ñ(;Ñ%ˆ
˜à%×*Ñ*¨:¸uÓSˆàŸ™ }¸eÓDˆäŸ	š	Ü<AÀ!¼HÔY¹H°SÔPUÐVWÖPXÈ˜1˜c˜f 1˜f c f¨1 f¨aÐ/×0Ð0ÑPXÑ0¹HÒYÐ_aô
ˆð &×*Ñ*¨:°r¸1¸|Õ;KÓLˆàŸ	™	 -Ó0ˆØŸ™ }Ó5ˆàÐùó Zs   Á-C
)r€   rÙ   rÏ   rR   s   @@r"   rÑ   rÑ   !  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
# )
ÚSwinRelativePositionBiasiI  aÏ  
Relative position bias for Swin's window-based attention, following the style of BeitRelativePositionBias.

Unlike BeiT, Swin has no CLS token, so the table covers exactly (2*ws_h-1)*(2*ws_w-1) unique
relative positions. The lookup index is purely determined by window_size (static), so it is stored
as a non-persistent buffer (recomputed from config on load, never serialised). The table values
are learned parameters and must be re-read on every forward call.
c                ó<   <€ V ^8„  d   QhRS[ RS[S[ S[ 3,          /# )r   Ú	num_headsÚwindow_size)r�   r\   )r    r!   s   "€r"   r#   Ú%SwinRelativePositionBias.__annotate__S  s'   ø€ ÷ 	tñ 	t¡#ð 	t±E¹#¹s¸(µOñ 	tr%   c                óž  <€ \         SV `  4        W n        V^ ,          V^,          ,          V n        \        P
                  ! \        P                  ! ^V^ ,          ,          ^,
          ^V^,          ,          ^,
          ,          V4      4      V n        \        P                  ! V P                  4       P                  R4      RR7      V n        R# )r   F)Ú
persistentNr•   )r(   r)   rí   Úwindow_arear   ry   r1   rz   Úrelative_position_bias_tableÚBufferÚ_create_relative_position_indexrœ   Úrelative_position_index)r*   rì   rí   r+   s   &&&€r"   r)   Ú!SwinRelativePositionBias.__init__S  s”   ø€ Ü‰ÑÔØ&ÔØ& q�>¨K¸­NÕ:ˆÔÜ,.¯LªLÜ�KŠK˜˜[¨�^Õ+¨aÕ/°A¸ÀA½Õ4FÈÕ4JÕKÈYÓWó-
ˆÔ)ô
 (*§y¢y°×1UÑ1UÓ1W×1\Ñ1\Ð]_Ó1`ÐmrÔ'sˆÖ$r%   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rD   r0   )r    r!   s   "€r"   r#   rî   ^  s   ø€ ÷ 'ñ '±·±ñ 'r%   c                óÔ  € \         P                  ! V P                  ^ ,          4      p\         P                  ! V P                  ^,          4      p\         P                  ! \         P                  ! W.RR7      4      p\         P
                  ! V^4      pVR,          VR,          ,
          pVP                  ^^^ 4      P                  4       pVR;;,          V P                  ^ ,          ^,
          ,          uu&   VR;;,          V P                  ^,          ^,
          ,          uu&   VR;;,          ^V P                  ^,          ,          ^,
          ,          uu&   VP                  R4      # )r   Úij)Úindexing)râ   râ   N)râ   Nrâ   )râ   râ   r   )râ   râ   r8   r•   )	r1   Úarangerí   ÚstackÚmeshgridrÌ   r™   Ú
contiguousÚsum)r*   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordss   &     r"   rô   Ú8SwinRelativePositionBias._create_relative_position_index^  s	  € Ü—<’< × 0Ñ 0°Õ 3Ó4ˆÜ—<’< × 0Ñ 0°Õ 3Ó4ˆä—’œUŸ^š^¨XÐ,@È4ÔPÓQˆÜŸš v¨qÓ1ˆà(¨Õ4°~ÀjÕ7QÕQˆØ)×1Ñ1°!°Q¸Ó:×EÑEÓGˆð 	˜×  D×$4Ñ$4°QÕ$7¸!Õ$;Õ;Ó Ø˜×  D×$4Ñ$4°QÕ$7¸!Õ$;Õ;Ó Ø˜×  A¨×(8Ñ(8¸Õ(;Õ$;¸aÕ$?Õ?Ó à×"Ñ" 2Ó&Ð&r%   c                ó4   <€ V ^8„  d   QhRS[ P                  /# rD   r0   )r    r!   s   "€r"   r#   rî   o  s   ø€ ÷ Qñ Q™Ÿ™ñ Qr%   c                óê   € V P                   V P                  ,          pVP                  V P                  V P                  R4      pVP	                  ^^ ^4      P                  4       P                  ^ 4      # )r8   r•   )rò   rõ   rœ   rñ   r™   rþ   r¬   )r*   Úrelative_position_biass   & r"   rA   Ú SwinRelativePositionBias.forwardo  sd   € Ø!%×!BÑ!BÀ4×C_ÑC_Õ!`ÐØ!7×!<Ñ!<¸T×=MÑ=MÈt×O_ÑO_ÐacÓ!dÐØ%×-Ñ-¨a°°AÓ6×AÑAÓC×MÑMÈaÓPÐPr%   )rò   rõ   rñ   rí   )rJ   rK   rL   rM   rN   r)   rô   rA   rO   rP   rQ   rR   s   @@r"   rê   rê   I  s2   ù‡ € ñ÷	tó 	t÷'ð '÷"Q÷ Qð Qr%   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Úscalingrƒ   Úkwargs)r   ÚModuler1   r2   r   r   r   )r    s   "r"   r#   r#   u  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)rž   r6   )Úpr9   r•   ç      à¿)r’   r1   ÚmatmulrÍ   r   rš   ÚsoftmaxÚfloat32Útor6   rƒ   r9   rþ   )
r  r  r  r  r  r  rƒ   r  Úattn_weightsÚattn_outputs
   &&&&&&&,  r"   Úeager_attention_forwardr  u  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# )ÚSwinAttentioni‘  c                ó2   <€ V ^8„  d   QhRS[ RS[RS[RS[/# )r   r…   rÂ   Únum_attention_headsrí   ©r   r�   )r    r!   s   "€r"   r#   ÚSwinAttention.__annotate__’  s1   ø€ ÷ pñ p™zð p¹ð pÑRUð pÑdgñ pr%   c                óú  <€ \         SV `  4        Wn        W0n        W#,          V n        VP
                  V n        V P                  R,          V n        RV n        \        P                  ! W"VP                  R7      V n        \        P                  ! W"VP                  R7      V n        \        P                  ! W"VP                  R7      V n        \        P                  ! W"4      V n        \!        W4V34      V n        R# )r�   FrÖ   Nr  )r(   r)   r…   r   Úhead_dimÚattention_probs_dropout_probÚattention_dropoutr  Ú	is_causalr   rØ   Úqkv_biasÚq_projÚk_projÚv_projÚo_projrê   r  )r*   r…   rÂ   r   rí   r+   s   &&&&&€r"   r)   ÚSwinAttention.__init__’  s®   ø€ Ü‰ÑÔØŒØ#6Ô Ø#Õ:ˆŒØ!'×!DÑ!DˆÔØ—}‘} dÕ*ˆŒØˆŒä—i’i ¸v¿¹ÔOˆŒÜ—i’i ¸v¿¹ÔOˆŒÜ—i’i ¸v¿¹ÔOˆŒÜ—i’i Ó9ˆŒä&>Ð?RÐbmÐTnÓ&oˆÖ#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   r/   r  Nr  r   )r1   r2   r[   r   r   r\   )r    r!   s   "€r"   r#   r"  ¢  sZ   ø€ ÷ 2)ñ 2)á—|‘|ð2)ñ ×)Ñ)¨DÕ0ð2)ñ Ñ+Õ,ð	2)ñ
 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ2)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V P                  4       p	Vez   VP                   ^ ,          p
V^ ,          V
,          pV^,          pVP                  ^4      P                  ^ 4      P                  VRRRR4      P                  R^WÌ4      pW’,           pMT	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  ppVP                  ! . VORN5!  P'                  4       pV P)                  V4      pVV3# )Nrƒ   r4   r  r•   )r:   r$  r)  rœ   rÍ   r*  r+  r  r¬   r«   r˜   r   Úget_interfacer…   Ú_attn_implementationr  r9   r&  r  rþ   r,  )r*   r/   r  r  Úinput_shapeÚhidden_shapeÚquery_statesÚ
key_statesÚvalue_statesr  Únum_windowsr±   r²   Úcombined_maskÚattention_interfacer  r  s   &&&,             r"   rA   ÚSwinAttention.forward¢  sÝ  € ð $×)Ñ)¨#¨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ˆð "&×!<Ñ!<Ó!>ÐØÒ%à(×.Ñ.¨qÕ1ˆKØ$ Q�¨;Õ6ˆJØ! !•nˆGð ×(Ñ(¨Ó+ß‘˜1“ß‘˜
 B¨¨B°Ó3ß‘˜˜Q Ó1ð	 ð 3ÕC‰Mà2ˆMä(?×(MÒ(MØ�K‰K×,Ñ,Ô.Eó)
Ðñ %8ØØØØØñ	%
ð  $Ÿ}Ÿ}˜}‘C°$×2HÑ2Hð	%
ð —L‘Lð	%
ð ñ	%
Ñ!ˆ�\ð "×)Ò)Ð;¨;Ð;¸Ó;×FÑFÓHˆØ—k‘k +Ó.ˆà˜LÐ(Ð(r%   )r&  r…   r$  r'  r*  r   r,  r)  r  r  r+  r'   ©	rJ   rK   rL   rM   r)   rA   rO   rP   rQ   rR   s   @@r"   r  r  ‘  s    ù‡ € ÷pó p÷ 2)÷ 2)ò 2)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# )ÚSwinMLPi×  c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r   r…   rž   r!  )r    r!   s   "€r"   r#   ÚSwinMLP.__annotate__Ø  s   ø€ ÷ ?ñ ?™zð ?±ñ ?r%   c                ó4  <€ \         SV `  4        \        VP                  ,          V n        \
        P                  ! V\        VP                  V,          4      4      V n	        \
        P                  ! \        VP                  V,          4      V4      V n
        R # r'   )r(   r)   r   Ú
hidden_actÚactivation_fnr   rØ   r�   Ú	mlp_ratioÚfc1Úfc2)r*   r…   rž   r+   s   &&&€r"   r)   ÚSwinMLP.__init__Ø  se   ø€ Ü‰ÑÔÜ# F×$5Ñ$5Õ6ˆÔÜ—9’9˜S¤# f×&6Ñ&6¸Õ&<Ó"=Ó>ˆŒÜ—9’9œS ×!1Ñ!1°CÕ!7Ó8¸#Ó>ˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# r.   r0   )r    r!   s   "€r"   r#   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'   )rD  rB  rE  )r*   r/   s   &&r"   rA   ÚSwinMLP.forwardÞ  s4   € ØŸ™ Ó/ˆØ×*Ñ*¨=Ó9ˆØŸ™ Ó/ˆàÐr%   )rB  rD  rE  r;  rR   s   @@r"   r=  r=  ×  s   ù‡ € ÷?ó ?÷÷ ð r%   r=  c                óÈ   € V P                   w  r#rEV P                  W#V,          WV,          W4      p V P                  ^^4      P                  4       P                  RWV4      pV# )z*
Partitions the given input into windows.
r•   ©r:   rœ   rÍ   rþ   )rÜ   rí   r±   rŠ   r‹   r¯   Úwindowss   &&     r"   Úwindow_partitionrM  æ  sg   € ð /<×.AÑ.AÑ+€J˜Ø!×&Ñ&Ø˜kÕ)¨;ÀÕ8LÈkó€Mð ×%Ñ% a¨Ó+×6Ñ6Ó8×=Ñ=¸bÀ+Ð\hÓi€GØ€Nr%   c                óÐ   € V P                   R,          pV P                  RW!,          W1,          WV4      p V P                  ^^4      P                  4       P                  RW#V4      p V # )z7
Merges windows to produce higher resolution features.
r•   rK  )rL  rí   rŠ   r‹   r¯   s   &&&& r"   Úwindow_reverserO  ò  s^   € ð —=‘= Õ$€LØ�l‰l˜2˜vÕ4°eÕ6JÈKÐfrÓs€GØ×Ñ  1Ó%×0Ñ0Ó2×7Ñ7¸¸FÈ<ÓX€GØ€Nr%   c                   ó¤   a a€ ] tR tRt oRV3R lV 3R llltRV3R lR lltV3R lR ltV3R lR	 ltV3R
 lR ltRV3R lR llt	Rt
VtV ;t# )Ú	SwinLayeriü  c                óT   <€ V ^8„  d   QhRS[ RS[RS[S[S[3,          RS[RS[RS[/# )r   r…   rž   Úinput_resolutionrì   Údrop_path_rateÚ
shift_size)r   r�   r\   r   )r    r!   s   "€r"   r#   ÚSwinLayer.__annotate__ý  sW   ø€ ÷ añ aáðañ ðañ  ¡¡S �/ð	añ
 ðañ ðañ ñar%   c                óþ  <€ \         SV `  4        \        WWAP                  R 7      V n        \
        P                  ! W!P                  R7      V n        \
        P                  ! W!P                  R7      V n	        \        W4      V n        \
        P                  ! VP                  4      V n        VP                  V n        W`n        W0n        VR8”  d   \#        V4      V n        R# \
        P$                  ! 4       V n        R# ))rí   ©Úepsr4   N)r(   r)   r  rí   Ú	attentionr   r   Úlayer_norm_epsÚlayernorm_beforeÚlayernorm_afterr=  Úmlpr�   r‚   rƒ   rU  rS  r   ÚIdentityÚ	drop_path)r*   r…   rž   rS  rì   rT  rU  r+   s   &&&&&&&€r"   r)   ÚSwinLayer.__init__ý  s°   ø€ ô 	‰ÑÔÜ& v°I×K]ÑK]Ô^ˆŒÜ "§¢¨S×6KÑ6KÔ LˆÔÜ!Ÿ|š|¨C×5JÑ5JÔKˆÔÜ˜6Ó'ˆŒÜ—z’z &×"<Ñ"<Ó=ˆŒØ!×-Ñ-ˆÔØ$ŒØ 0ÔØ9GÈ#Ô9Mœ nÓ5ˆŽÔSU×S^ÒS^ÓS`ˆŽr%   c          
      ó†   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[S[,          RS[ P                  /# )r   r/   rà   Úalways_partitionr  r   ©r1   r2   r\   r�   r©   r   r   )r    r!   s   "€r"   r#   rV    sS   ø€ ÷ -+ñ -+á—|‘|ð-+ñ  ¡¡S �/ð-+ñ ð	-+ñ
 Ñ+Õ,ð-+ñ 
�‰ñ-+r%   c                ó,  € V'       g   V P                  V4       Vw  rVVP                  4       w  rxp	Tp
V P                  V4      pVP                  WuWi4      pV P	                  WV4      w  rVP
                  w  rŒrØ\        V P                  V4      V P                  4      pVP                  RV P                  V P                  ,          V	4      pV P                  WÍVP                  VP                  R7      pV P                  ! Wï3/ VB w  ppV P                  V4      pVP                  RV P                  V P                  V	4      pV P                  \        VV P                  WÍ4      RR7      pV^,          ^ 8”  g   V^,          ^ 8”  d    VRRV1RV1R3,          P                  4       pVP                  WuV,          V	4      pW P!                  V4      ,           pTpV P#                  V4      pV P%                  V4      pV P                  V4      V,           pVV3# )r8   r5   T)Úreverserâ   Nr•   )Úset_shift_and_window_sizer’   r\  rœ   rÇ   r:   rM  Úcyclic_shiftrí   Úget_attn_maskr6   r7   rZ  rƒ   rO  rþ   r`  r]  r^  )r*   r/   rà   rc  r  rŠ   r‹   r±   r®   ÚchannelsÚshortcutrÆ   Ú
height_padÚ	width_padÚhidden_states_windowsÚ	attn_maskÚattention_outputr  Úattention_windowsÚresiduals   &&&&,               r"   rA   ÚSwinLayer.forward  s  € ÷  Ø×*Ñ*Ð+;Ô<Ø(‰ˆØ"/×"4Ñ"4Ó"6Ñˆ
�xØ ˆà×-Ñ-¨mÓ<ˆØ%×*Ñ*¨:¸uÓOˆð %)§N¡N°=È%Ó$PÑ!ˆØ&3×&9Ñ&9Ñ#ˆ�yä 0°×1BÑ1BÀ=Ó1QÐSW×ScÑScÓ dÐØ 5× :Ñ :¸2¸t×?OÑ?OÐRV×RbÑRbÕ?bÐdlÓ mÐØ×&Ñ&Ø¨×)<Ñ)<ÐEZ×EaÑEað 'ó 
ˆ	ð *.¯ªÐ8MÑ)cÐ\bÑ)cÑ&Ð˜,ØŸ<™<Ð(8Ó9Ðà,×1Ñ1°"°d×6FÑ6FÈ×HXÑHXÐZbÓcÐØ ×-Ñ-ÜÐ,¨d×.>Ñ.>À
ÓVÐ`dð .ó 
Ðð �a�=˜1Ô 
¨1¥°Ô 1Ø 1°!°W°f°W¸f¸u¸fÀaÐ2GÕ H× SÑ SÓ UÐà-×2Ñ2°:È½~ÈxÓXÐØ §>¡>Ð2CÓ#DÕDˆà ˆØ×,Ñ,¨]Ó;ˆØŸ™ Ó/ˆØŸ™ ]Ó3°hÕ>ˆà˜lÐ*Ð*r%   c                ó:   <€ V ^8„  d   QhRS[ S[S[3,          RR/# )r   rS  r   N)r\   r�   )r    r!   s   "€r"   r#   rV  @  s#   ø€ ÷ ñ ¹%ÁÁSÀ½/ð Èdñ r%   c                ó  € \        V4      V P                  8:  dq   \        ^ 4      V n        \        P
                  P                  4       '       d+   \        P                   ! \        P                  ! V4      4      M
\        V4      V n        R# R# )zQClamp window and shift sizes when the window is larger than the input resolution.N)Úminrí   r   rU  r1   r–   r—   Útensor)r*   rS  s   &&r"   rg  Ú#SwinLayer.set_shift_and_window_size@  s_   € äÐÓ  D×$4Ñ$4Ô4Ü'¨›lˆDŒOä=B¿Y¹Y×=QÑ=Q×=SÒ=S”—	’	œ%Ÿ,š,Ð'7Ó8Ô9ÔY\Ð]mÓYnð Öñ 5r%   c                ó‚   <€ V ^8„  d   QhRS[ RS[ RS[P                  RS[P                  RS[P                  R,          /# )r   rŠ   r‹   r6   r7   r   N)r�   r1   r6   r7   r2   )r    r!   s   "€r"   r#   rV  H  sH   ø€ ÷ ñ ¡Cð ±ð ¹E¿K¹Kð ÑQV×Q]ÑQ]ð Ñbg×bnÑbnÐquÕbuñ r%   c                ó0  € V P                   ^ 8:  d   R# \        P                  ! WR7      p\        P                  ! W$R7      pWQV P                  ,
          8¬  P	                  4       WQV P                   ,
          8¬  P	                  4       ,           pWbV P                  ,
          8¬  P	                  4       WbV P                   ,
          8¬  P	                  4       ,           pVR,          ^,          VR,          ,           P                  V4      p	\        W�P                  4      p
V
P                  RV P                  V P                  ,          4      p
V
P                  ^4      V
P                  ^4      ,
          pVP                  V^ 8g  R4      P                  V^ 8H  R4      pV# )um  Build the cyclic-shift attention mask for shifted-window MSA; returns None when shift_size is 0.

Each (h, w) position belongs to one of 9 cyclic-shift regions (3 along each axis), encoded
as ``h_region * 3 + w_region``. Regions per axis:
- 0: indices ``[0, axis - window_size)``
- 1: indices ``[axis - window_size, axis - shift_size)``
- 2: indices ``[axis - shift_size, axis)``
Implementation note: a single arithmetic pass on `torch.arange` (two comparisons +
broadcast add) replaces the original 9-iteration nested-Python-loop slice-assignment â€”
fully vectorised, no per-cell host-side scatter, no GPUâ†”host sync.
N)r7   r4   )Nrâ   NN)NNrâ   Nr•   g      YÀ)
rU  r1   rû   rí   Úlongr  rM  rœ   r¬   Úmasked_fill)r*   rŠ   r‹   r6   r7   Úh_idxÚw_idxÚh_regionÚw_regionÚimg_maskÚmask_windowsro  s   &&&&&       r"   ri  ÚSwinLayer.get_attn_maskH  sJ  € ð �?‰?˜aÔÙÜ—’˜VÔ3ˆÜ—’˜UÔ2ˆØ d×&6Ñ&6Õ6Ñ6×<Ñ<Ó>À%ÐTX×TcÑTcÕKcÑBc×AiÑAiÓAkÕkˆØ T×%5Ñ%5Õ5Ñ5×;Ñ;Ó=ÀÐRV×RaÑRaÕJaÑAa×@gÑ@gÓ@iÕiˆØÐ0Õ1°AÕ5¸ÐATÕ8UÕU×YÑYÐZ_Ó`ˆÜ'¨×2BÑ2BÓCˆØ#×(Ñ(¨¨T×-=Ñ-=À×@PÑ@PÕ-PÓQˆØ ×*Ñ*¨1Ó-°×0FÑ0FÀqÓ0IÕIˆ	Ø×)Ñ)¨)°q©.¸&ÓA×MÑMÈiÐ[\ÉnÐ^aÓbˆ	ØÐr%   c                ó„   <€ V ^8„  d   QhRS[ P                  RS[RS[RS[S[ P                  S[S[R3,          3,          /# )r   r/   rŠ   r‹   r   .)r1   r2   r�   r\   )r    r!   s   "€r"   r#   rV  a  sL   ø€ ÷ )ñ )¡u§|¡|ð )¹Sð )Éð )ÑQVÑW\×WcÑWcÑejÑknÐpsÐksÕetÐWtÕQuñ )r%   c                ó&  € V P                   W0P                   ,          ,
          V P                   ,          pV P                   W P                   ,          ,
          V P                   ,          p^ ^ ^ V^ V3p\        P                  P                  W4      pW3# )zHPad feature map so both spatial dimensions are divisible by window_size.)rí   r   rš   rÅ   )r*   r/   rŠ   r‹   Ú	pad_rightÚ
pad_bottomrÆ   s   &&&&   r"   rÇ   ÚSwinLayer.maybe_pada  sy   € à×%Ñ%¨×0@Ñ0@Õ(@Õ@ÀD×DTÑDTÕTˆ	Ø×&Ñ&¨×2BÑ2BÕ)BÕBÀd×FVÑFVÕVˆ
Ø˜˜A˜y¨!¨ZÐ8ˆ
ÜŸ™×)Ñ)¨-ÓDˆØÐ(Ð(r%   c                óT   <€ V ^8„  d   QhRS[ P                  RS[RS[ P                  /# )r   r/   rf  r   )r1   r2   r©   )r    r!   s   "€r"   r#   rV  i  s-   ø€ ÷ 	ñ 	©%¯,©,ð 	Áð 	ÑRW×R^ÑR^ñ 	r%   c                ó¶   € V P                   ^ 8”  dH   V'       d   ^MRp\        P                  ! VW0P                   ,          W0P                   ,          3RR7      pV# )zOApply a cyclic shift along the spatial dimensions for shifted-window attention.)ÚshiftsÚdimsr•   )r8   r   )rU  r1   Úroll)r*   r/   rf  Ú	directions   &&& r"   rh  ÚSwinLayer.cyclic_shifti  sI   € à�?‰?˜QÔß$™¨"ˆIÜ!ŸJšJØØ!§O¡OÕ3°YÇÁÕ5PÐQØôˆMð
 Ðr%   )	rZ  r`  rƒ   rS  r]  r\  r^  rU  rí   )r4   r   r¶   )rJ   rK   rL   rM   r)   rA   rg  ri  rÇ   rh  rO   rP   rQ   rR   s   @@r"   rQ  rQ  ü  sI   ù‡ € ÷aõ a÷(-+ò -+÷^ð ÷ð ÷2)ð )÷	÷ 	ò 	r%   rQ  c                   óf   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	V3R lR lltRtVtV ;t	# )
Ú	SwinStageiu  c                ód   <€ V ^8„  d   QhRS[ RS[RS[S[S[3,          RS[RS[RS[S[,          /# )r   r…   rž   rS  Údepthrì   r`  )r   r�   r\   Úlistr   )r    r!   s   "€r"   r#   ÚSwinStage.__annotate__v  s[   ø€ ÷ Rñ RáðRñ ðRñ  ¡¡S �/ð	Rñ
 ðRñ ðRñ ™•;ñRr%   c                óD  <€ \         S	V `  4        Wn        \        P                  ! \        V4       Uu. uF;  p\        TTTTWh,          V^,          ^ 8X  d   ^ MVP                  ^,          R7      NK=  	  up4      V n        Ve   V! VR7      V n	        R# RV n	        R# u upi )r   )r…   rž   rS  rì   rT  rU  Nrã   )
r(   r)   r…   r   Ú
ModuleListrå   rQ  rí   ÚblocksÚ
downsample)
r*   r…   rž   rS  r“  rì   r`  r™  Úir+   s
   &&&&&&&& €r"   r)   ÚSwinStage.__init__v  s˜   ø€ ô 	‰ÑÔØŒÜ—m’mô ˜uœó
ñ &�Aô Ø!ØØ%5Ø'Ø#,¥<Ø%&¨¥U¨a¤Z™q°f×6HÑ6HÈAÕ6M÷ñ &ñ
ó
ˆŒð 2<Ò1G™*¨Ô-ˆŽÈTˆŽùò
s   ³ABc                óz   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RS[RS[RS[ P                  /# )r   r/   Ú!hidden_states_before_downsamplingrŠ   r‹   Ú(output_hidden_states_before_downsamplingr   )r1   r2   r�   r©   )r    r!   s   "€r"   r#   r•  ’  s[   ø€ ÷ bñ bá—|‘|ðbñ ,1¯<©<ðbñ ð	bñ
 ðbñ 37ðbñ 
�‰ñbr%   c                ó  € V'       d   Y#Tr‡pM3V P                   e"   Y^,           ^,          V^,           ^,          r‡pMYTr‡pVP                  w  ršpVP                  W—W‹4      P                  ^ ^^^4      P	                  4       # )u^  
Select the spatial hidden states for this stage and reshape from (B, L, C) to (B, C, H, W).

The chosen state and its resolution depend on output_hidden_states_before_downsampling:
- True  â†’ pre-downsampling states at (height, width) â€” used by the backbone.
- False â†’ post-downsampling states at half the resolution (if a downsampler exists).
)r™  r:   rœ   r™   rþ   )r*   r/   r�  rŠ   r‹   rž  Úspatial_stateÚhÚwr±   r®   rÂ   s   &&&&&&      r"   Úget_reshaped_hidden_statesÚ$SwinStage.get_reshaped_hidden_states’  s�   € ÷ 4Ø"CÈU˜aˆM˜aØ�_‰_Ò(Ø"/¸1µ*ÀÕ1BÀUÈQÅYÐSTÕDT˜aˆM˜aà"/¸˜aˆMà%2×%8Ñ%8Ñ"ˆ
�{Ø×!Ñ! *°Ó@×HÑHÈÈAÈqÐRSÓT×_Ñ_ÓaÐar%   c                óÜ   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[RS[S[,          RS[S[ P                  S[ P                  S[ P                  R,          3,          /# )r   r/   rà   rc  rž  r  r   Nrd  )r    r!   s   "€r"   r#   r•  «  s~   ø€ ÷ Hñ Há—|‘|ðHñ  ¡¡S �/ðHñ ð	Hñ
 37ðHñ Ñ+Õ,ðHñ 
‰u�|‰|™UŸ\™\©5¯<©<¸$Õ+>Ð>Õ	?ñHr%   c                ó¾   € Vw  rgR pV P                    F  p	V	! W3RV/VB w  rK  	  Tp
V P                  e   V P                  W¢4      pV P                  WWgV4      pWV3# )Nrc  )r˜  r™  r£  )r*   r/   rà   rc  rž  r  rŠ   r‹   Úlast_attn_weightsÚlayer_moduler�  rY   s   &&&&&,      r"   rA   ÚSwinStage.forward«  sŠ   € ð )‰ˆØ ÐØ ŸKœKˆLÙ/;Øñ0ØBRð0ØV\ñ0Ñ,ˆMÑ,ñ (ð
 -:Ð)Ø�?‰?Ò&Ø ŸO™OÐ,MÓ`ˆMà!%×!@Ñ!@Ø¸fÐMuó"
Ðð Ð6GÐGÐGr%   )r˜  r…   r™  )FF)
rJ   rK   rL   rM   r)   r£  rA   rO   rP   rQ   rR   s   @@r"   r‘  r‘  u  s/   ù‡ € ÷Ró R÷8bð b÷2H÷ Hò H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R7      R	]! ]^RR7      /tR
tRR.t]P(                  ! 4       V 3R l4       tV3R ltRtVtV ;t# )ÚSwinPreTrainedModeliÅ  Úswinr¦   Tr‘  Fr/   )ÚindexÚcapture_initial_hidden_staterX   ru   z(attention\.self\.relative_position_indexz:attention\.relative_position_bias\.relative_position_indexc                óþ  <€ \         SV `  V4       \        V\        4      '       da   VP                  e!   \
        P                  ! VP                  4       VP                  e#   \
        P                  ! VP                  4       R# R# \        V\        4      '       da   \
        P                  ! VP                  4       \
        P                  ! VP                  VP                  4       P                  R4      4       R# R# )zInitialize the weightsNr•   )r(   Ú_init_weightsr¼   rr   r|   ÚinitÚzeros_r~   rê   rò   Úcopy_rõ   rô   rœ   )r*   r  r+   s   &&€r"   r°  Ú!SwinPreTrainedModel._init_weightsã  s®   ø€ ô 	‰Ñ˜fÔ%Ü�fœn×-Ò-Ø× Ñ Ò,Ü—’˜F×-Ñ-Ô.Ø×)Ñ)Ò5Ü—’˜F×6Ñ6Ö7ñ 6ä˜Ô 8×9Ò9Ü�KŠK˜×;Ñ;Ô<Ü�JŠJ�v×5Ñ5°v×7]Ñ7]Ó7_×7dÑ7dÐegÓ7hÖiñ :r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # ©r   r…   r   )r    r!   s   "€r"   r#   Ú SwinPreTrainedModel.__annotate__Å  s   ø‡ ‚ áÑò r%   r^   )Úimage)rJ   rK   rL   rM   Ú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_unexpectedr1   Úno_gradr°  r_   rO   rP   rQ   rR   s   @@r"   r«  r«  Å  s¨   ù‡ € ð ÐØ$€OØ!ÐØ&*Ð#Ø$˜ÐØ€NØ ÐØÐØ"&ÐØ!Ðð 	™¨	¸ÐY]Ô^ð
 	‘n Y°aÐV[Ô\ð	Ðð ,Ðð 	4ØEð*Ð&ð
 ‡]‚]ƒ_ô
jó ð
j÷? … r%   r«  c                   ó€   a a€ ] tR tRt oV3R lV 3R llt]]! RR7      ]R	V3R lR ll4       4       4       tRt	Vt
V ;t# )
ÚSwinEncoderiñ  c                ó<   <€ V ^8„  d   QhRS[ RS[S[S[3,          /# )r   r…   rw   )r   r\   r�   )r    r!   s   "€r"   r#   ÚSwinEncoder.__annotate__ò  s#   ø€ ÷ ñ ™zð ±e¹CÁ¸Hµoñ r%   c                óŠ  <€ \         SV `  V4       \        VP                  4      V n        Wn        \        \        VP                  4      4       Uu. uF@  q1P                  V,          \        \        VP                  4      ^,
          ^4      ,          NKB  	  pp\        P                  ! \        V P                  4       Uu. uF×  p\        T\        VP                  ^V,          ,          4      V^ ,          ^V,          ,          V^,          ^V,          ,          3VP                  V,          VP                  V,          V\        VP                  RV 4      \        VP                  RV^,            4       WPP                  ^,
          8  d   \         MRR7      NKÙ  	  up4      V n        V P%                  4        R# u upi u upi )r8   N)r…   rž   rS  r“  rì   r`  r™  )r(   r)   ÚlenÚdepthsÚ
num_layersr…   rå   rÿ   rT  Úmaxr   r—  r‘  r�   r{   rì   rÑ   ÚlayersÚ	post_init)r*   r…   rw   rš  ÚdprÚ	layer_idxr+   s   &&&   €r"   r)   ÚSwinEncoder.__init__ò  sk  ø€ Ü‰Ñ˜Ô Ü˜fŸm™mÓ,ˆŒØŒÜSXÔY\Ð]c×]jÑ]jÓYkÔSlÓmÑSlÈa×$Ñ$ qÕ(¬3¬s°6·=±=Ó/AÀAÕ/EÀqÓ+I×IÐIÑSlˆÐmÜ—m’mô "' t§¡Ô!7óñ "8�Iô Ø!Ü˜F×,Ñ,¨q°)­|Õ;Ó<Ø&/°¥l°q¸)µ|Õ&DÀiÐPQÅlÐWXÐZcÕWcÕFdÐ%eØ Ÿ-™-¨	Õ2Ø$×.Ñ.¨yÕ9Ø!¤# f§m¡m°J°YÐ&?Ó"@Ä3ÀvÇ}Á}ÐUdÐW`ÐcdÕWdÐGeÓCfÐgØ4=ÇÁÐRSÕ@SÔ4SÕ/ÐZ^÷ñ "8ñó
ˆŒð 	�‰Öùò nùòs   ÁAF;Ã CG F)Útie_last_hidden_statesc                ó~   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[RS[RS[RS[S[,          RS[/# )r   r/   rà   rc  Úoutput_hidden_statesrž  r  r   )r1   r2   r\   r�   r©   r   r   rU   )r    r!   s   "€r"   r#   rÊ  
  sc   ø€ ÷ +
ñ +
á—|‘|ð+
ñ  ¡¡S �/ð+
ñ ð	+
ñ
 #ð+
ñ 37ð+
ñ Ñ+Õ,ð+
ñ 
ñ+
r%   c                ó¦  € RpV'       dI   VP                   w  r‰p
VP                  ! V.VOV
N5!  P                  ^ ^^^4      P                  4       pV3pV P                   Fc  pV! VV3RVRV/VB w  rp	V'       d
   W}3,          pVP
                  f   K5  V^ ,          ^,           ^,          V^,          ^,           ^,          3pKe  	  \        VVR7      # )a�  
input_dimensions (`tuple[int, int]`):
    Spatial `(height, width)` of the patch grid entering the encoder.
always_partition (`bool`, *optional*, defaults to `False`):
    If `True`, always apply window partitioning regardless of input resolution.
output_hidden_states_before_downsampling (`bool`, *optional*, defaults to `False`):
    If `True`, `reshaped_hidden_states` contains pre-downsampling feature maps.
Nrc  rž  )rW   rY   )r:   rœ   r™   rþ   rÐ  r™  rU   )r*   r/   rà   rc  r×  rž  r  Úall_reshaped_hidden_statesr±   r®   rÂ   Ústem_spatialr¨  Úreshaped_hidden_states   &&&&&&,       r"   rA   ÚSwinEncoder.forward  s  € ð( &*Ð"ßð *7×)<Ñ)<Ñ&ˆJ˜;à×"Ò" :ÐNÐ0@ÐNÀ+ÓN×VÑVÐWXÐZ[Ð]^Ð`aÓb×mÑmÓoð ð +7¨Ð&à ŸKœKˆLÙ6BØØ ñ7ð "2ð7ð :bð	7ð
 ñ7Ñ3ˆM°!÷ $Ø*Ð.FÕFÐ*Ø×&Ñ&Ô2Ø%5°aÕ%8¸1Õ%<ÀÕ$BÐEUÐVWÕEXÐ[\ÕE\ÐabÕDbÐ#cÒ ñ (ô !Ø+Ø#=ô
ð 	
r%   )r…   rÐ  rÎ  )FFF)rJ   rK   rL   rM   r)   r   r   r   rA   rO   rP   rQ   rR   s   @@r"   rÈ  rÈ  ñ  sB   ù‡ € ÷ó ð*  Ù¨EÔ2Ø÷+
ñ +
ó ó 3ó  ÷+
ð +
r%   rÈ  c                   ó`   a a€ ] tR tRt oRV 3R llt]]RV3R lR ll4       4       tRtVt	V ;t
# )Ú	SwinModeli8  c                ó  <€ \         SV `  V4       Wn        \        VP                  4      V n        \        VP                  ^V P
                  ^,
          ,          ,          4      V n        \        WR7      V n
        \        WP                  P                  4      V n        \        P                  ! V P                  VP                   R7      V n        V'       d   \        P$                  ! ^4      MRV n        V P)                  4        R# )zí
add_pooling_layer (`bool`, *optional*, defaults to `True`):
    Whether or not to apply pooling layer.
use_mask_token (`bool`, *optional*, defaults to `False`):
    Whether or not to create and apply mask tokens in the embedding layer.
)r†   rX  N)r(   r)   r…   rÌ  rÍ  rÎ  r�   r{   Únum_featuresrr   r‰   rÈ  rx   Úencoderr   r   r[  Ú	layernormÚAdaptiveAvgPool1dÚpoolerrÑ  )r*   r…   Úadd_pooling_layerr†   r+   s   &&&&€r"   r)   ÚSwinModel.__init__:  s¯   ø€ ô 	‰Ñ˜Ô ØŒÜ˜fŸm™mÓ,ˆŒÜ × 0Ñ 0°1¸¿¹È1Õ9LÕ3MÕ MÓNˆÔä(¨ÔOˆŒÜ" 6¯?©?×+EÑ+EÓFˆŒäŸš d×&7Ñ&7¸V×=RÑ=RÔSˆŒß1B”b×*Ò*¨1Ô-ÈˆŒð 	�‰Ör%   c          
      óŒ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[/# ©r   r¦   Nr§   r£   r  r   )r1   r[   r¨   r©   r   r   rb   )r    r!   s   "€r"   r#   ÚSwinModel.__annotate__Q  sY   ø€ ÷ (
ñ (
á×'Ñ'¨$Õ.ð(
ñ ×)Ñ)¨DÕ0ð(
ñ #'ð	(
ñ
 Ñ+Õ,ð(
ñ 
ñ(
r%   c                óÊ  € VP                  RV P                  P                  4      pV P                  WVR7      w  rgV P                  ! VV3RV/VB pVP
                  p	V P                  V	4      p	Rp
V P                  e9   V P                  V	P                  ^^4      4      p
\        P                  ! V
^4      p
\        V	V
VP                  VP                  VP                  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§   r£   N)rW   rd   r/   rX   rY   )Úpopr…   r×  r‰   rá  rW   râ  rä  rÍ   r1   rÌ   rb   r/   rX   rY   )r*   r¦   r§   r£   r  r×  Úembedding_outputrà   Úencoder_outputsÚsequence_outputÚpooled_outputs   &&&&,      r"   rA   ÚSwinModel.forwardO  sê   € ð  &Ÿz™zÐ*@À$Ç+Á+×BbÑBbÓcÐà-1¯_©_ØÐTlð .=ó .
Ñ*Ðð Ÿ,š,ØØñ
ð "6ð
ð ñ	
ˆð *×;Ñ;ˆØŸ.™.¨Ó9ˆàˆØ�;‰;Ò"Ø ŸK™K¨×(AÑ(AÀ!ÀQÓ(GÓHˆMÜ!ŸMšM¨-¸Ó;ˆMäØ-Ø'Ø)×7Ñ7Ø&×1Ñ1Ø#2×#IÑ#Iô
ð 	
r%   )r…   r‰   rá  râ  rà  rÎ  rä  )TF©NNF©rJ   rK   rL   rM   r)   r   r   rA   rO   rP   rQ   rR   s   @@r"   rÞ  rÞ  8  s0   ù‡ € ÷ð* Ø÷(
ñ (
ó ó ÷(
ð (
r%   rÞ  ad  
    Swin Model with a decoder on top for masked image modeling, as proposed in [SimMIM](https://huggingface.co/papers/2111.09886).

    <Tip>

    Note that we provide a script to pre-train this model on custom data in our [examples
    directory](https://github.com/huggingface/transformers/tree/main/examples/pytorch/image-pretraining).

    </Tip>
    c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚSwinForMaskedImageModelingi|  c                ó¸  <€ \         SV `  V4       \        VR RR7      V n        \	        VP
                  ^VP                  ^,
          ,          ,          4      p\        P                  ! \        P                  ! W!P                  ^,          VP                  ,          ^R7      \        P                  ! VP                  4      4      V n        V P                  4        R# )FT)rå  r†   )Úin_channelsÚout_channelsr¹   N)r(   r)   rÞ  r¬  r�   r{   rÎ  r   Ú
SequentialrÀ   Úencoder_strider¯   ÚPixelShuffleÚdecoderrÑ  )r*   r…   rà  r+   s   && €r"   r)   Ú#SwinForMaskedImageModeling.__init__‰  sž   ø€ Ü‰Ñ˜Ô ä˜f¸ÈdÔSˆŒ	ä˜6×+Ñ+¨a°F×4EÑ4EÈÕ4IÕ.JÕJÓKˆÜ—}’}Ü�IŠIØ(×7LÑ7LÈaÕ7OÐRX×ReÑReÕ7eÐstôô �OŠO˜F×1Ñ1Ó2ó	
ˆŒð 	�‰Ör%   c          
      óŒ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[/# rè  )r1   r[   r¨   r©   r   r   rg   )r    r!   s   "€r"   r#   Ú'SwinForMaskedImageModeling.__annotate__›  s`   ø€ ÷ H
ñ H
á×'Ñ'¨$Õ.ðH
ñ ×)Ñ)¨DÕ0ðH
ñ #'ð	H
ñ
 Ñ+Õ,ðH
ñ 
'ñH
r%   c                ó¨  € V P                   ! V3RVRV/VB pVP                  pVP                  ^^4      pVP                  w  rxp	\        P
                  ! V	R,          4      ;r«VP                  WxW«4      pV P                  V4      pRpVEe   V P                  P                  V P                  P                  ,          pVP                  R	Wî4      pVP                  V P                  P                  ^4      P                  V P                  P                  ^4      P                  ^4      P                  4       p\        P                  P!                  WRR7      pVV,          P#                  4       VP#                  4       R,           ,          V P                  P$                  ,          p\'        VVVP(                  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).

Examples:
```python
>>> from transformers import AutoImageProcessor, SwinForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-base-simmim-window6-192")
>>> model = SwinForMaskedImageModeling.from_pretrained("microsoft/swin-base-simmim-window6-192")

>>> 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, reconstructed_pixel_values = outputs.loss, outputs.reconstruction
>>> list(reconstructed_pixel_values.shape)
[1, 3, 192, 192]
```r§   r£   r�   NÚnone)rÙ   gñhãˆµøä>)ri   rj   r/   rX   rY   r•   )r¬  rW   rÍ   r:   Úmathr=   r˜   rû  r…   r»   r„   Úrepeat_interleaver¬   rþ   r   rš   Úl1_lossrÿ   r¯   rg   r/   rX   rY   )r*   r¦   r§   r£   r  Úoutputsrî  r±   r¯   Úsequence_lengthrŠ   r‹   Úreconstructed_pixel_valuesÚmasked_im_lossr’   r´   Úreconstruction_losss   &&&&,            r"   rA   Ú"SwinForMaskedImageModeling.forward™  sœ  € ðL —)’)Øñ
à+ð
ð &>ð
ð ñ	
ˆð "×3Ñ3ˆà)×3Ñ3°A°qÓ9ˆØ4C×4IÑ4IÑ1ˆ
 /ÜŸš O°SÕ$8Ó9Ð9ˆØ)×1Ñ1°*ÈFÓZˆð &*§\¡\°/Ó%BÐ"àˆØÓ&Ø—;‘;×)Ñ)¨T¯[©[×-CÑ-CÕCˆDØ-×5Ñ5°b¸$ÓEˆOà×1Ñ1°$·+±+×2HÑ2HÈ!ÓLß"Ñ" 4§;¡;×#9Ñ#9¸1Ó=ß‘˜1“ß‘“ð	 ô #%§-¡-×"7Ñ"7¸ÐlrÐ"7Ó"sÐØ1°DÕ8×=Ñ=Ó?À4Ç8Á8Ã:ÐPTÕCTÕUÐX\×XcÑXc×XpÑXpÕpˆNä,ØØ5Ø!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r%   )rû  r¬  rñ  rò  rR   s   @@r"   rô  rô  |  s4   ù‡ € õð  Ø÷H
ñ H
ó ó ÷H
ð H
r%   rô  aâ  
    Swin Model transformer with an image classification head on top (a linear layer on top of the final hidden state of
    the [CLS] token) e.g. for ImageNet.

    <Tip>

        Note that it's possible to fine-tune Swin on higher resolution images than the ones it has been trained on, by
        setting `interpolate_pos_encoding` to `True` in the forward of the model. This will interpolate the pre-trained
        position embeddings to the higher resolution.

    </Tip>
    c                   ó\   a a€ ] tR tRt oV 3R lt]]RV3R lR ll4       4       tRtVt	V ;t
# )ÚSwinForImageClassificationiæ  c                óH  <€ \         SV `  V4       VP                  V n        \        V4      V n        VP                  ^ 8”  d6   \
        P                  ! V P                  P                  VP                  4      M\
        P                  ! 4       V n	        V P                  4        R# )r   N)r(   r)   Ú
num_labelsrÞ  r¬  r   rØ   rà  r_  Ú
classifierrÑ  )r*   r…   r+   s   &&€r"   r)   Ú#SwinForImageClassification.__init__õ  sx   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ˜fÓ%ˆŒ	ð EK×DUÑDUÐXYÔDYŒB�IŠI�d—i‘i×,Ñ,¨f×.?Ñ.?Ô@Ô_a×_jÒ_jÓ_lð 	Œð
 	�‰Ör%   c          
      óŒ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[,          RS[/# )r   r¦   NÚlabelsr£   r  r   )r1   r[   Ú
LongTensorr©   r   r   rm   )r    r!   s   "€r"   r#   Ú'SwinForImageClassification.__annotate__  sY   ø€ ÷ !
ñ !
á×'Ñ'¨$Õ.ð!
ñ × Ñ  4Õ'ð!
ñ #'ð	!
ñ
 Ñ+Õ,ð!
ñ 
#ñ!
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                  3/ VB p\        VVVP                  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£   N)ri   ro   r/   rX   rY   )	r¬  rd   r  Úloss_functionr…   rm   r/   rX   rY   )	r*   r¦   r  r£   r  r  rï  ro   ri   s	   &&&&,    r"   rA   Ú"SwinForImageClassification.forward  s–   € ð —)’)Øñ
à%=ð
ð ñ
ˆð  ×-Ñ-ˆà—‘ Ó/ˆàˆØÒØ×%Ò% f°d·k±kÑLÀVÑLˆDä(ØØØ!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r%   )r  r  r¬  rñ  rò  rR   s   @@r"   r  r  æ  s0   ù‡ € õð Ø÷!
ñ !
ó ó ÷!
ð !
r%   r  zM
    Swin backbone, to be used with frameworks like DETR and MaskFormer.
    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4       4       4       t	Rt
VtV ;t# )ÚSwinBackbonei)  zswin.layernorm.*c                ó    <€ V ^8„  d   QhRS[ /# r¶  r   )r    r!   s   "€r"   r#   ÚSwinBackbone.__annotate__1  s   ø€ ÷ ñ ™zñ r%   c           	     óü  <€ \         SV `  V4       VP                  .\        \	        VP
                  4      4       Uu. uF&  p\        VP                  ^V,          ,          4      NK(  	  up,           V n        \        VRR7      V n	        / p\        V P                  V P                  4       F  w  rE\        P                  ! V4      W4&   K  	  \        P                  ! V4      V n        V P#                  4        R# u upi )r   F)rå  N)r(   r)   r{   rå   rÌ  rÍ  r�   rà  rÞ  r¬  ÚzipÚout_featuresrj  r   r   Ú
ModuleDictÚhidden_states_normsrÑ  )r*   r…   rš  r  Ústager¯   r+   s   &&    €r"   r)   ÚSwinBackbone.__init__1  sÊ   ø€ Ü‰Ñ˜Ô à#×-Ñ-Ð.ÔX]Ô^aÐbh×boÑboÓ^pÔXqÓ1rÑXqÐST´#°f×6FÑ6FÈÈAÍÕ6MÖ2NÑXqÑ1rÕrˆÔÜ˜f¸Ô>ˆŒ	ð !ÐÜ#& t×'8Ñ'8¸$¿-¹-Ö#HÑˆEÜ)+¯ª°lÓ)CÐÓ&ñ $Iä#%§=¢=Ð1DÓ#EˆÔ ð 	�‰Öùò 2ss   ½,C9c                óP   <€ V ^8„  d   QhRS[ P                  RS[S[,          RS[/# )r   r¦   r  r   )r1   r2   r   r   r   )r    r!   s   "€r"   r#   r  C  s3   ø€ ÷ 7
ñ 7
á—l‘lð7
ñ Ñ+Õ,ð7
ñ 
ñ	7
r%   c                ó.  € V P                   ! V3RRRR/VB pRp\        V P                  VP                  4       F·  w  rVWPP                  9   g   K  VP
                  w  rxršVP                  ^ ^^^4      P                  4       pVP                  WyV
,          V4      pV P                  V,          ! V4      pVP                  WyW¨4      pVP                  ^ ^^^4      P                  4       pWF3,          pK¹  	  \        VVP                  VP                  R7      # )aë  
Examples:

```python
>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> processor = AutoImageProcessor.from_pretrained("shi-labs/nat-mini-in1k-224")
>>> model = AutoBackbone.from_pretrained(
...     "microsoft/swin-tiny-patch4-window7-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, 7, 7]
```
rc  Trž  )Úfeature_mapsr/   rX   r^   )r¬  r  Ústage_namesrY   r  r:   r™   rþ   rœ   r  r   rX   )r*   r¦   r  r  r$  r   Úhidden_stater±   r¯   rŠ   r‹   s   &&,        r"   rA   ÚSwinBackbone.forward@  s  € ðH —)’)Øñ
à!ð
ð 6:ð
ð ñ	
ˆð ˆÜ#& t×'7Ñ'7¸×9WÑ9WÖ#XÑˆEØ×)Ñ)Ö)Ø:F×:LÑ:LÑ7�
¨&Ø+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�Ø+×0Ñ0°Àe½^È\ÓZ�Ø#×7Ñ7¸Ö>¸|ÓL�Ø+×0Ñ0°ÀUÓY�Ø+×3Ñ3°A°q¸!¸QÓ?×JÑJÓL�Ø Õ/’ñ $Yô Ø%Ø!×8Ñ8Ø×)Ñ)ô
ð 	
r%   )r  rà  r¬  )rJ   rK   rL   rM   Ú_keys_to_ignore_on_load_missingr)   r   r	   r   rA   rO   rP   rQ   rR   s   @@r"   r  r  )  sC   ù‡ € ð (;Ð&;Ð#÷ó ð Ø Ø÷7
ó ó !ó ÷7
ð 7
r%   r  )Nr4   )r  rô  rÞ  r«  r  )>Úcollections.abcr½   r  r   Údataclassesr   r1   r   Ú r   r±  Úactivationsr   Úbackbone_utilsr   r	   Úmodeling_layersr
   Úmodeling_outputsr   Úmodeling_utilsr   r   Úprocessing_utilsr   Úutilsr   r   r   r   Úutils.genericr   r   Úutils.output_capturingr   r   Úconfiguration_swinr   r  r   rU   rb   rg   rm   rr   rt   rÑ   rê   r  r  r=  rM  rO  rQ  r‘  r«  rÈ  rÞ  rô  r  r  Ú__all__r^   r%   r"   Ú<module>r7     s„  ðó* Û Ý $Ý !ã Ý å &Ý !ß HÝ 9Ý .ß FÝ &ß OÓ Oß Iß EÝ *ô%�2—9‘9ô %ñ0 ðôð
 ôH˜ó Hó óðHñ  ðôð
 ôH�kó Hó óðHñ& ðôð
 ôH Kó Hó óðHñ* ðôð
 ôH ó Hó óðHô*M-�R—Y‘Yô M-ô`'-˜"Ÿ)™)ô '-ôT%�r—y‘yô %ôP)Q˜rŸy™yô )Q÷X%ô8C)�B—I‘Iô C)ôLˆb�i‰iô ò	òôvÐ*ô vôrMHÐ*ô MHð` ô(j˜/ó (jó ð(jôVD
Ð%ô D
ðN ô@
Ð#ó @
ó ð@
ñF ð	ôô[
Ð!4ó [
óð[
ñ| ðôô2
Ð!4ó 2
óð2
ñj ðôô
L
�=Ð"5ó L
óð
L
ò^‚r%   