+
    œ°³jÂÚ  ã                   ó‚  € R t ^ RIt^ RI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 ^R
IHtHtHtHt ^RIHt ^RIHt ]P@                  ! ]!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 t'R t( ! R R]PR                  4      t* ! R R]PR                  4      t+ ! R  R!]PR                  4      t, ! R" R#]PR                  4      t- ! R$ R%]PR                  4      t. ! R& R']PR                  4      t/ ! R( R)]PR                  4      t0 ! R* R+]PR                  4      t1 ! R, R-]PR                  4      t2 ! R. R/]PR                  4      t3 ! R0 R1]4      t4 ! R2 R3]PR                  4      t5] ! R4 R5]4      4       t6] ! R6 R7]64      4       t7]! R8R7       ! R9 R:]64      4       t8]! R;R7       ! R< R=]64      4       t9]! R>R7       ! R? R@]]64      4       t:. RAOt;R# )Bz!PyTorch Swinv2 Transformer model.N)Ú	dataclass)ÚTensorÚnn)Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚGradientCheckpointingLayer)ÚBackboneOutput)ÚPreTrainedModel)ÚModelOutputÚauto_docstringÚloggingÚ	torch_int)Úcan_return_tuple©ÚSwinv2ConfigzP
    Swinv2 encoder's outputs, with potential hidden states and attentions.
    )Úcustom_introc                   ó@   a € ] tR t^(t o RtRtRtRtRtV 3R lt	Rt
V tR# )ÚSwinv2EncoderOutputaÕ  
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&   # )é   NÚlast_hidden_state.Úhidden_statesÚ
attentionsÚreshaped_hidden_states©ÚtorchÚFloatTensorÚtuple)ÚformatÚ__classdict__s   "€Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/models/swinv2/modeling_swinv2.pyÚ__annotate__Ú Swinv2EncoderOutput.__annotate__(   sƒ   ø‡ ‚ ñ" ×(Ñ(¨4Õ/Ñ6ñ# ñ$ ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ% ñ& ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ' ñ( "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò) ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__©r!   s   @r"   r   r   (   s)   ø‡ € ñð 37ÐØ:>€MØ7;€JØCGÐ÷) ƒ r%   r   zX
    Swinv2 model's outputs that also contains a pooling of the last hidden states.
    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# )ÚSwinv2ModelOutputa‘  
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   Nr   Úpooler_output.r   r   r   r   )r    r!   s   "€r"   r#   ÚSwinv2ModelOutput.__annotate__?   s›   ø‡ ‚ ñ& ×(Ñ(¨4Õ/Ñ6ñ' ñ( ×$Ñ$ tÕ+Ñ2ñ) ñ* ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ+ ñ, ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ- ñ. "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò/ r%   r&   )r'   r(   r)   r*   r+   r   r3   r   r   r   r,   r-   r.   r/   s   @r"   r1   r1   ?   s.   ø‡ € ñ	ð 37ÐØ.2€MØ:>€MØ7;€JØCGÐ÷/ ƒ r%   r1   z,
    Swinv2 masked image model outputs.
    c                   óD   a € ] tR t^Yt o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSwinv2MaskedImageModelingOutputaÛ  
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   r   r   r   )r    r!   s   "€r"   r#   Ú,Swinv2MaskedImageModelingOutput.__annotate__Y   s›   ø‡ ‚ ñ* ×
Ñ
˜dÕ
"Ñ)ñ+ ñ, ×%Ñ%¨Õ,Ñ3ñ- ñ. ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ/ ñ0 ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ1 ñ2 "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò3 r%   r&   )r'   r(   r)   r*   r+   r8   r9   r   r   r   r,   r-   r.   r/   s   @r"   r6   r6   Y   s-   ø‡ € ñð &*€DØ/3€NØ:>€MØ7;€JØCGÐ÷3 ƒ r%   r6   z2
    Swinv2 outputs for image classification.
    c                   óD   a € ] tR t^ut o RtRtRtRtRtRt	V 3R lt
RtV tR# )ÚSwinv2ImageClassifierOutputa  
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   Nr8   Úlogits.r   r   r   r   )r    r!   s   "€r"   r#   Ú(Swinv2ImageClassifierOutput.__annotate__u   s›   ø‡ ‚ ñ* ×
Ñ
˜dÕ
"Ñ)ñ+ ñ, ×Ñ Õ$Ñ+ñ- ñ. ™×*Ñ*¨CÐ/Õ0°4Õ7Ñ>ñ/ ñ0 ‘e×'Ñ'¨Ð,Õ-°Õ4Ñ;ñ1 ñ2 "¡%×"3Ñ"3°SÐ"8Õ9¸DÕ@ÑGò3 r%   r&   )r'   r(   r)   r*   r+   r8   r>   r   r   r   r,   r-   r.   r/   s   @r"   r<   r<   u   s-   ø‡ € ñð &*€DØ'+€FØ:>€MØ7;€JØCGÐ÷3 ƒ 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.
éÿÿÿÿ©ÚshapeÚviewÚ	transposeÚ
contiguous)Úinput_featureÚwindow_sizeÚ
batch_sizeÚheightÚwidthÚnum_channelsÚwindowss   &&     r"   Úwindow_partitionrN   ’   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.
rA   rB   )rM   rH   rJ   rK   rL   s   &&&& r"   Úwindow_reverserP   Ÿ   s^   € ð —=‘= Õ$€LØ�l‰l˜2˜vÕ4°eÕ6JÈKÐfrÓs€GØ×Ñ  1Ó%×0Ñ0Ó2×7Ñ7¸¸FÈ<ÓX€GØ€Nr%   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
# )
ÚSwinv2EmbeddingszO
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                  '       dD   \        P                  ! \        P                  ! ^V^,           VP                  4      4      V n        MRV n        \        P                  ! VP                  4      V n        \        P"                  ! VP$                  4      V n        VP(                  V n        Wn        R# )é   N)ÚsuperÚ__init__ÚSwinv2PatchEmbeddingsÚpatch_embeddingsÚnum_patchesÚ	grid_sizeÚ
patch_gridr   Ú	Parameterr   ÚzerosÚ	embed_dimÚ
mask_tokenÚuse_absolute_embeddingsÚposition_embeddingsÚ	LayerNormÚnormÚDropoutÚhidden_dropout_probÚdropoutÚ
patch_sizeÚconfig)Úselfrh   Úuse_mask_tokenrY   Ú	__class__s   &&& €r"   rV   ÚSwinv2Embeddings.__init__¯   sã   ø€ Ü‰ÑÔä 5°fÓ =ˆÔØ×+Ñ+×7Ñ7ˆØ×/Ñ/×9Ñ9ˆŒßO]œ"Ÿ,š,¤u§{¢{°1°a¸×9IÑ9IÓ'JÔKÐcgˆŒà×)×)Ð)Ü')§|¢|´E·K²KÀÀ;ÐQRÅ?ÐTZ×TdÑTdÓ4eÓ'fˆDÕ$à'+ˆDÔ$ä—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   Ú
embeddingsrJ   rK   Úreturn)r   r   Úint)r    r!   s   "€r"   r#   ÚSwinv2Embeddings.__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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
ç      à?ÚbicubicF)ÚsizeÚmodeÚalign_corners©Údim)ºNNN:NrT   N)rz   ºrT   NNrA   )rC   ra   r   ÚjitÚ
is_tracingrg   r   ÚreshapeÚpermuter   Ú
functionalÚinterpolaterD   Úcat)ri   rn   rJ   rK   rY   Únum_positionsÚclass_pos_embedÚpatch_pos_embedry   Ú
new_heightÚ	new_widthÚsqrt_num_positionss   &&&&        r"   Úinterpolate_pos_encodingÚ)Swinv2Embeddings.interpolate_pos_encodingÂ   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 ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[RS[S[ P
                  ,          /# )r   Úpixel_valuesNÚbool_masked_posr‰   ro   )r   r   Ú
BoolTensorÚboolr   r   )r    r!   s   "€r"   r#   rq   ê   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# )Nç      ð?rA   )rC   rX   rc   ru   r_   ÚexpandÚ	unsqueezeÚtype_asra   r‰   rf   )ri   rŒ   r�   r‰   Ú_rL   rJ   rK   rn   Úoutput_dimensionsrI   Úseq_lenÚmask_tokensÚmasks   &&&&          r"   ÚforwardÚSwinv2Embeddings.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%   )rh   rf   r_   rc   rX   r[   rg   ra   ©F©NF)r'   r(   r)   r*   r+   rV   r‰   rš   r-   r.   Ú__classcell__©rk   r!   s   @@r"   rR   rR   ª   s+   ù‡ € ñ÷÷&&Dð &D÷P-÷ -ò -r%   rR   c                   óN   a a€ ] tR tRt oRtV 3R ltR tV3R lR ltRtVt	V ;t
# )rW   i  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# )rT   )Úkernel_sizeÚstrideN)rU   rV   Ú
image_sizerg   rL   r^   Ú
isinstanceÚcollectionsÚabcÚIterablerY   rZ   r   ÚConv2dÚ
projection)ri   rh   r¤   rg   rL   Úhidden_sizerY   rk   s   &&     €r"   rV   ÚSwinv2PatchEmbeddings.__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.)rg   r   r€   Úpad)ri   rŒ   rJ   rK   Ú
pad_valuess   &&&& r"   Ú	maybe_padÚSwinv2PatchEmbeddings.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Œ   Nro   )r   r   r   r   rp   )r    r!   s   "€r"   r#   Ú"Swinv2PatchEmbeddings.__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   )rC   r°   rª   ÚflattenrE   )ri   rŒ   r•   rL   rJ   rK   rn   r–   s   &&      r"   rš   ÚSwinv2PatchEmbeddings.forward%  sp   € Ø)5×);Ñ);Ñ&ˆ˜à—~‘~ l¸EÓBˆØ—_‘_ \Ó2ˆ
Ø(×.Ñ.Ñˆˆ1�eØ#˜OÐØ×'Ñ'¨Ó*×4Ñ4°Q¸Ó:ˆ
àÐ,Ð,r%   )rZ   rY   rg   rª   )r'   r(   r)   r*   r+   rV   r°   rš   r-   r.   rž   rŸ   s   @@r"   rW   rW     s$   ù‡ € ñõjò÷	-÷ 	-ð 	-r%   rW   c                   ót   a a€ ] tR tRt oRt]P                  3V3R lV 3R llltR tV3R lR lt	Rt
VtV ;t# )	ÚSwinv2PatchMergingi1  a  
Patch Merging Layer.

Args:
    input_resolution (`tuple[int]`):
        Resolution of input feature.
    dim (`int`):
        Number of input channels.
    norm_layer (`nn.Module`, *optional*, defaults to `nn.LayerNorm`):
        Normalization layer class.
c                óT   <€ V ^8„  d   QhRS[ S[,          RS[RS[P                  RR/# )r   Úinput_resolutionry   Ú
norm_layerro   N)r   rp   r   ÚModule)r    r!   s   "€r"   r#   ÚSwinv2PatchMerging.__annotate__>  s2   ø€ ÷ (ñ (©©s­ð (¹#ð (É2Ï9É9ð (Ðhlñ (r%   c                ó¼   <€ \         SV `  4        Wn        W n        \        P
                  ! ^V,          ^V,          RR7      V n        V! ^V,          4      V n        R# )é   F©ÚbiasN)rU   rV   r»   ry   r   ÚLinearÚ	reductionrc   )ri   r»   ry   r¼   rk   s   &&&&€r"   rV   ÚSwinv2PatchMerging.__init__>  sE   ø€ Ü‰ÑÔØ 0ÔØŒÜŸš 1 s¥7¨A°­G¸%Ô@ˆŒÙ˜q 3�wÓ'ˆŽ	r%   c                óÀ   € V^,          ^8H  ;'       g    V^,          ^8H  pV'       d6   ^ ^ ^ V^,          ^ V^,          3p\         P                  P                  W4      pV# rµ   )r   r€   r®   )ri   rG   rJ   rK   Ú
should_padr¯   s   &&&&  r"   r°   ÚSwinv2PatchMerging.maybe_padE  sV   € Ø˜q•j A‘o×:Ð:¨5°1­9¸©>ˆ
ßØ˜Q  5¨1¥9¨a°¸!µÐ<ˆJÜŸM™M×-Ñ-¨mÓHˆMàÐr%   c                ój   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[ P                  /# )r   rG   Úinput_dimensionsro   )r   r   r   rp   )r    r!   s   "€r"   r#   r¾   M  s6   ø€ ÷ ñ ¡U§\¡\ð ÁUÉ3ÑPSÈ8Å_ð ÑY^×YeÑYeñ r%   c                óf  € Vw  r4VP                   w  rVpVP                  WSWG4      pV P                  WV4      pVR,          pVR,          p	VR,          p
VR,          p\        P                  ! W‰W«.R4      pVP                  VR^V,          4      pV P                  V4      pV P                  V4      pV# )rz   )rz   ºé    Nr   rÌ   rz   )rz   ºrT   Nr   rÌ   rz   )rz   rÌ   rÎ   rz   )rz   rÎ   rÎ   rz   rA   )rC   rD   r°   r   r‚   rÄ   rc   )ri   rG   rÊ   rJ   rK   rI   ry   rL   Úinput_feature_0Úinput_feature_1Úinput_feature_2Úinput_feature_3s   &&&         r"   rš   ÚSwinv2PatchMerging.forwardM  s¸   € Ø(‰ˆà(5×(;Ñ(;Ñ%ˆ
˜à%×*Ñ*¨:¸uÓSˆàŸ™ }¸eÓDˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆà'Ð(8Õ9ˆäŸ	š	 ?À_Ð"fÐhjÓkˆØ%×*Ñ*¨:°r¸1¸|Õ;KÓLˆàŸ™ }Ó5ˆØŸ	™	 -Ó0ˆàÐr%   )ry   r»   rc   rÄ   )r'   r(   r)   r*   r+   r   rb   rV   r°   rš   r-   r.   rž   rŸ   s   @@r"   r¹   r¹   1  s5   ù‡ € ñ
ð XZ×WcÑWc÷ (õ (ò÷÷ ð r%   r¹   c                   óX   a a€ ] tR tRt o^ ^ .3V 3R lltRV3R lR lltR tRtVtV ;t	# )ÚSwinv2SelfAttentionig  c           
     óâ  <€ \         SV `  4        W#,          ^ 8w  d   \        RV RV R24      hW0n        \	        W#,          4      V n        V P                  V P
                  ,          V n        \        V\        P                  P                  4      '       d   TMWD3V n        WPn        \        P                  ! \        P                   ! ^
\        P"                  ! V^^34      ,          4      4      V n        \        P&                  ! \        P(                  ! ^RRR7      \        P*                  ! RR7      \        P(                  ! RVRR7      4      V n        V P/                  4       w  rg\        P0                  ! VRR	7      V n        \        P0                  ! VRR	7      V n        \        P(                  ! V P                  V P                  VP6                  R7      V n        \        P(                  ! V P                  V P                  RR7      V n        \        P(                  ! V P                  V P                  VP6                  R7      V n        \        P>                  ! VP@                  4      V n!        R
# )rÍ   zThe hidden size (z6) is not a multiple of the number of attention heads (Ú)i   TrÁ   )ÚinplaceF)Ú
persistentN)"rU   rV   Ú
ValueErrorÚnum_attention_headsrp   Úattention_head_sizeÚall_head_sizer¥   r¦   r§   r¨   rH   Úpretrained_window_sizer   r\   r   ÚlogÚonesÚlogit_scaleÚ
SequentialrÃ   ÚReLUÚcontinuous_position_bias_mlpÚcreate_coords_table_and_indexÚBufferÚrelative_coords_tableÚrelative_position_indexÚqkv_biasÚqueryÚkeyÚvaluerd   Úattention_probs_dropout_probrf   )	ri   rh   ry   Ú	num_headsrH   rÞ   rç   rè   rk   s	   &&&&&&  €r"   rV   ÚSwinv2SelfAttention.__init__h  sÃ  ø€ Ü‰ÑÔØ�?˜aÔÜØ# C 5Ð(^Ð_hÐ^iÐijÐkóð ð $-Ô Ü#& s¥Ó#7ˆÔ Ø!×5Ñ5¸×8PÑ8PÕPˆÔä% k´;·?±?×3KÑ3K×LÒL‰KÐS^ÐRlð 	Ôð '=Ô#ÜŸ<š<¬¯	ª	°"´u·z²zÀ9ÈaÐQRÐBSÓ7TÕ2TÓ(UÓVˆÔä,.¯MªMÜ�IŠI�a˜ 4Ô(¬"¯'ª'¸$Ô*?ÄÇÂÈ3ÐPYÐ`eÔAfó-
ˆÔ)ð :>×9[Ñ9[Ó9]Ñ6ÐÜ%'§Y¢YÐ/DÐQVÔ%WˆÔ"Ü')§y¢yÐ1HÐUZÔ'[ˆÔ$ä—Y’Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—9’9˜T×/Ñ/°×1CÑ1CÈ%ÔPˆŒÜ—Y’Y˜t×1Ñ1°4×3EÑ3EÈFÏOÉOÔ\ˆŒ
Ü—z’z &×"EÑ"EÓFˆŽr%   c          	      óš   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[ P                  ,          /# ©r   r   Úattention_maskNÚoutput_attentionsro   ©r   r   r   r�   r   )r    r!   s   "€r"   r#   Ú Swinv2SelfAttention.__annotate__…  sU   ø€ ÷ Bñ Bá—|‘|ðBñ ×)Ñ)¨DÕ0ðBñ   $�;ð	Bñ
 
‰u�|‰|Õ	ñBr%   c                óÖ  € VP                   w  rEpV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      pV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      pV P                  V4      P                  VRV P                  V P                  4      P                  ^^4      p	\        P                  P                  VRR7      \        P                  P                  VRR7      P                  RR4      ,          p
\        P                  ! V P                  \        P                  ! R4      R7      P!                  4       pW«,          p
V P#                  V P$                  4      P                  RV P                  4      pWÀP&                  P                  R4      ,          P                  V P(                  ^ ,          V P(                  ^,          ,          V P(                  ^ ,          V P(                  ^,          ,          R4      pVP+                  ^^ ^4      P-                  4       p^\        P.                  ! V4      ,          pW­P1                  ^ 4      ,           p
VeŸ   VP                   ^ ,          pV
P                  WN,          WàP                  WU4      VP1                  ^4      P1                  ^ 4      ,           p
W¢P1                  ^4      P1                  ^ 4      ,           p
V
P                  RV P                  WU4      p
\        P                  P3                  V
RR7      pV P5                  V4      p\        P6                  ! Wù4      pVP+                  ^ ^^^4      P-                  4       pVP9                  4       RR V P:                  3,           pVP                  V4      pV'       d   VV3pV# V3pV# )rT   rx   )ÚmaxNrA   éþÿÿÿg      Y@)rC   rê   rD   rÛ   rÜ   rE   rë   rì   r   r€   Ú	normalizer   Úclamprá   Úmathrß   Úexprä   rç   rè   rH   r   rF   Úsigmoidr“   Úsoftmaxrf   Úmatmulru   rÝ   )ri   r   rò   ró   rI   ry   rL   Úquery_layerÚ	key_layerÚvalue_layerÚattention_scoresrá   Úrelative_position_bias_tableÚrelative_position_biasÚ
mask_shapeÚattention_probsÚcontext_layerÚnew_context_layer_shapeÚoutputss   &&&&               r"   rš   ÚSwinv2SelfAttention.forward…  sa  € ð )6×(;Ñ(;Ñ%ˆ
˜à�J‰J�}Ó%ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ð �H‰H�]Ó#ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ð �J‰J�}Ó%ß‰T�*˜b $×":Ñ":¸D×<TÑ<TÓUß‰Y�q˜!‹_ð 	ô Ÿ=™=×2Ñ2°;ÀBÐ2ÓGÌ"Ï-É-×JaÑJaØ˜2ð Kbó K
ç
‰)�B˜Ó
õÐô —k’k $×"2Ñ"2¼¿ºÀÓ8LÔM×QÑQÓSˆØ+Õ9ÐØ'+×'HÑ'HÈ×IcÑIcÓ'd×'iÑ'iØ�×(Ñ(ó(
Ð$ð ">×>ZÑ>Z×>_Ñ>_Ð`bÓ>cÕ!d×!iÑ!iØ×Ñ˜QÕ $×"2Ñ"2°1Õ"5Õ5°t×7GÑ7GÈÕ7JÈT×M]ÑM]Ð^_ÕM`Õ7`Ðbdó"
Ðð "8×!?Ñ!?ÀÀ1ÀaÓ!H×!SÑ!SÓ!UÐØ!#¤e§m¢mÐ4JÓ&KÕ!KÐØ+×.NÑ.NÈqÓ.QÕQÐàÒ%à'×-Ñ-¨aÕ0ˆJØ/×4Ñ4ØÕ(¨*×6NÑ6NÐPSó à×(Ñ(¨Ó+×5Ñ5°aÓ8õ 9Ðð  0×2JÑ2JÈ1Ó2M×2WÑ2WÐXYÓ2ZÕZÐØ/×4Ñ4°R¸×9QÑ9QÐSVÓ\Ðô Ÿ-™-×/Ñ/Ð0@ÀbÐ/ÓIˆð Ÿ,™, Ó7ˆô Ÿš _ÓBˆØ%×-Ñ-¨a°°A°qÓ9×DÑDÓFˆØ"/×"4Ñ"4Ó"6°s¸Ð";¸t×?QÑ?QÐ>SÕ"SÐØ%×*Ñ*Ð+BÓCˆç6G�= /Ð2ˆàˆð O\ÐM]ˆàˆr%   c                ó.  € \         P                  ! V P                  ^ ,          ^,
          ) V P                  ^ ,          \         P                  R7      P	                  4       p\         P                  ! V P                  ^,          ^,
          ) V P                  ^,          \         P                  R7      P	                  4       p\         P
                  ! \         P                  ! W.RR7      4      P                  ^^^ 4      P                  4       P                  ^ 4      pV P                  ^ ,          ^ 8”  d\   VR;;,          V P                  ^ ,          ^,
          ,          uu&   VR;;,          V P                  ^,          ^,
          ,          uu&   MrV P                  ^ ,          ^8”  d[   VR;;,          V P                  ^ ,          ^,
          ,          uu&   VR;;,          V P                  ^,          ^,
          ,          uu&   V^,          p\         P                  ! V4      \         P                  ! \         P                  ! V4      R,           4      ,          \        P                  ! ^4      ,          pVP                  \!        V P"                  P%                  4       4      P&                  4      p\         P                  ! V P                  ^ ,          4      p\         P                  ! V P                  ^,          4      p\         P
                  ! \         P                  ! WE.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      p	W93# )rÍ   ©ÚdtypeÚij)Úindexingr‘   )rz   rz   rz   rÍ   )rz   rz   rz   rT   )rz   rz   N)rz   Nrz   )rz   rz   rÍ   )rz   rz   rT   rA   )r   ÚarangerH   Úint64ÚfloatÚstackÚmeshgridr   rF   r“   rÞ   ÚsignÚlog2Úabsrû   ÚtoÚnexträ   Ú
parametersr  r¶   Úsum)
ri   Úrelative_coords_hÚrelative_coords_wrç   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordsrè   s
   &         r"   rå   Ú1Swinv2SelfAttention.create_coords_table_and_indexÉ  sù  € ä!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`kÑ`kÔl×rÑrÓtÐÜ!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`kÑ`kÔl×rÑrÓtÐä�KŠKœŸšÐ(9Ð'MÐX\Ô]Ó^ß‰W�Q˜˜1Óß‰Z‹\ß‰Y�q‹\ð	 	ð ×&Ñ& qÕ)¨AÔ-Ø! *×-°×1LÑ1LÈQÕ1OÐRSÕ1SÕSÓ-Ø! *×-°×1LÑ1LÈQÕ1OÐRSÕ1SÕSÔ-Ø×Ñ˜aÕ  1Ô$Ø! *×-°×1AÑ1AÀ!Õ1DÀqÕ1HÕHÓ-Ø! *×-°×1AÑ1AÀ!Õ1DÀqÕ1HÕHÓ-Ø Õ"Ðä�JŠJÐ,Ó-´·
²
¼5¿9º9ÐEZÓ;[Ð^aÕ;aÓ0bÕbÔei×enÒenÐopÓeqÕqð 	ð !6× 8Ñ 8¼¸d×>_Ñ>_×>jÑ>jÓ>lÓ9m×9sÑ9sÓ tÐô —<’< × 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Õ$?Õ?Ó Ø"1×"5Ñ"5°bÓ"9Ðà$Ð=Ð=r%   )rÝ   rÜ   rä   rf   rë   rá   rÛ   rÞ   rê   rç   rè   rì   rH   r�   )
r'   r(   r)   r*   rV   rš   rå   r-   r.   rž   rŸ   s   @@r"   rÕ   rÕ   g  s+   ù‡ € ØTUÐWXÐSY÷ G÷:Bò B÷H#>ò #>r%   rÕ   c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwinv2SelfOutputið  c                ó¤   <€ \         SV `  4        \        P                  ! W"4      V n        \        P
                  ! VP                  4      V n        R # ©N)rU   rV   r   rÃ   Údenserd   rí   rf   ©ri   rh   ry   rk   s   &&&€r"   rV   ÚSwinv2SelfOutput.__init__ñ  s4   ø€ Ü‰ÑÔÜ—Y’Y˜sÓ(ˆŒ
Ü—z’z &×"EÑ"EÓFˆŽr%   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   r   Úinput_tensorro   ©r   r   )r    r!   s   "€r"   r#   ÚSwinv2SelfOutput.__annotate__ö  s1   ø€ ÷ ñ ¡U§\¡\ð ÁÇÁð ÑRW×R^ÑR^ñ r%   c                óJ   € V P                  V4      pV P                  V4      pV# r(  ©r)  rf   )ri   r   r-  s   &&&r"   rš   ÚSwinv2SelfOutput.forwardö  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆàÐr%   r1  ©	r'   r(   r)   r*   rV   rš   r-   r.   rž   rŸ   s   @@r"   r&  r&  ð  s   ù‡ € õG÷
÷ ð r%   r&  c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚSwinv2Attentioniý  c           
     óÈ   <€ \         SV `  4        \        TTTT\        V\        P
                  P                  4      '       d   TMWU3R 7      V n        \        W4      V n	        R# )©rh   ry   rî   rH   rÞ   N)
rU   rV   rÕ   r¥   r¦   r§   r¨   ri   r&  Úoutput)ri   rh   ry   rî   rH   rÞ   rk   s   &&&&&&€r"   rV   ÚSwinv2Attention.__init__þ  sW   ø€ Ü‰ÑÔÜ'ØØØØ#äÐ0´+·/±/×2JÑ2J×KÒKñ $:à(ÐAô
ˆŒ	ô ' vÓ3ˆŽr%   c          	      óš   <€ V ^8„  d   QhRS[ P                  RS[ P                  R,          RS[R,          RS[S[ P                  ,          /# rñ   rô   )r    r!   s   "€r"   r#   ÚSwinv2Attention.__annotate__  sO   ø€ ÷ 	ñ 	á—|‘|ð	ñ ×)Ñ)¨DÕ0ð	ñ   $�;ð		ñ
 
‰u�|‰|Õ	ñ	r%   c                ó~   € V P                  WV4      pV P                  V^ ,          V4      pV3VR,          ,           pV# ©rÍ   r{   )ri   r8  )ri   r   rò   ró   Úself_outputsÚattention_outputr
  s   &&&&   r"   rš   ÚSwinv2Attention.forward  sA   € ð —y‘y Ð@QÓRˆØŸ;™; |°A¥¸ÓFÐØ#Ð%¨°RÕ(8Õ8ˆØˆr%   )r8  ri   ©rÍ   r�   r3  rŸ   s   @@r"   r5  r5  ý  s   ù‡ € ÷4÷	÷ 	ò 	r%   r5  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwinv2Intermediatei  c                ó.  <€ \         SV `  4        \        P                  ! V\	        VP
                  V,          4      4      V n        \        VP                  \        4      '       d   \        VP                  ,          V n        R # VP                  V n        R # r(  )rU   rV   r   rÃ   rp   Ú	mlp_ratior)  r¥   Ú
hidden_actÚstrr   Úintermediate_act_fnr*  s   &&&€r"   rV   ÚSwinv2Intermediate.__init__  sd   ø€ Ü‰ÑÔÜ—Y’Y˜s¤C¨×(8Ñ(8¸3Õ(>Ó$?Ó@ˆŒ
Ü�f×'Ñ'¬×-Ò-Ü'-¨f×.?Ñ.?Õ'@ˆDÖ$à'-×'8Ñ'8ˆDÖ$r%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# ©r   r   ro   r.  )r    r!   s   "€r"   r#   ÚSwinv2Intermediate.__annotate__!  ó#   ø€ ÷ ñ ¡U§\¡\ð ±e·l±lñ r%   c                óJ   € V P                  V4      pV P                  V4      pV# r(  ©r)  rH  ©ri   r   s   &&r"   rš   ÚSwinv2Intermediate.forward!  s&   € ØŸ
™
 =Ó1ˆØ×0Ñ0°Ó?ˆØÐr%   rO  r3  rŸ   s   @@r"   rC  rC    s   ù‡ € õ9÷÷ ð r%   rC  c                   óD   a a€ ] tR tRt oV 3R ltV3R lR ltRtVtV ;t# )ÚSwinv2Outputi(  c                óÚ   <€ \         SV `  4        \        P                  ! \	        VP
                  V,          4      V4      V n        \        P                  ! VP                  4      V n	        R # r(  )
rU   rV   r   rÃ   rp   rE  r)  rd   re   rf   r*  s   &&&€r"   rV   ÚSwinv2Output.__init__)  sF   ø€ Ü‰ÑÔÜ—Y’Yœs 6×#3Ñ#3°cÕ#9Ó:¸CÓ@ˆŒ
Ü—z’z &×"<Ñ"<Ó=ˆŽr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rK  r.  )r    r!   s   "€r"   r#   ÚSwinv2Output.__annotate__.  rM  r%   c                óJ   € V P                  V4      pV P                  V4      pV# r(  r1  rP  s   &&r"   rš   ÚSwinv2Output.forward.  s$   € ØŸ
™
 =Ó1ˆØŸ™ ]Ó3ˆØÐr%   r1  r3  rŸ   s   @@r"   rS  rS  (  s   ù‡ € õ>÷
÷ ð r%   rS  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
# )ÚSwinv2DropPathi5  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_probro   N)r  )r    r!   s   "€r"   r#   ÚSwinv2DropPath.__annotate__<  s   ø€ ÷ #ñ #¡%ð #°$ñ #r%   c                ó0   <€ \         SV `  4        Wn        R # r(  )rU   rV   r]  )ri   r]  rk   s   &&€r"   rV   ÚSwinv2DropPath.__init__<  s   ø€ Ü‰ÑÔØ"Žr%   c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# rK  r.  )r    r!   s   "€r"   r#   r^  @  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  Údevice)rT   )
r]  ÚtrainingrC   Úndimr   Úrandr  rd  ÚfloorÚdiv)ri   r   Ú	keep_probrC   Úrandom_tensors   &&   r"   rš   ÚSwinv2DropPath.forward@  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   ro   )rG  )r    r!   s   "€r"   r#   r^  I  s   ø€ ÷ %ñ %™Cñ %r%   c                ó    € R V P                    2# )zp=©r]  ©ri   s   &r"   Ú
extra_reprÚSwinv2DropPath.extra_reprI  s   € Ø�D—N‘NÐ#Ð$Ð$r%   rp  )rc  )r'   r(   r)   r*   r+   rV   rš   rr  r-   r.   rž   rŸ   s   @@r"   r[  r[  5  s-   ù‡ € ñ÷#õ #÷<ð <÷%÷ %ð %r%   r[  c                   ój   a a€ ] tR tRt oR
V 3R lltV3R lR ltR tR tRV3R lR lltR	t	Vt
V ;t# )ÚSwinv2LayeriM  c           
     ó†  <€ \         S	V `  4        W0n        V P                  VP                  VP                  3Wf34      w  r†V^ ,          V n        V^ ,          V n        \        TTTV P                  \        V\        P                  P                  4      '       d   TMWw3R7      V n        \        P                  ! W!P                  R7      V n        VR8”  d   \!        V4      M\        P"                  ! 4       V n        \'        W4      V n        \+        W4      V n        \        P                  ! W!P                  R7      V n        R# )rÍ   r7  ©Úepsrc  N)rU   rV   r»   Ú_compute_window_shiftrH   Ú
shift_sizer5  r¥   r¦   r§   r¨   Ú	attentionr   rb   Úlayer_norm_epsÚlayernorm_beforer[  ÚIdentityÚ	drop_pathrC  ÚintermediaterS  r8  Úlayernorm_after)
ri   rh   ry   r»   rî   Údrop_path_raterz  rÞ   rH   rk   s
   &&&&&&&& €r"   rV   ÚSwinv2Layer.__init__N  s  ø€ ô 	‰ÑÔØ 0ÔØ"&×"<Ñ"<Ø×Ñ ×!3Ñ!3Ð4°zÐ6Nó#
Ñˆð ' q�>ˆÔØ$ Q�-ˆŒÜ(ØØØØ×(Ñ(äÐ0´+·/±/×2JÑ2J×KÒKñ $:à(ÐAô
ˆŒô !#§¢¨S×6KÑ6KÔ LˆÔØ;IÈCÔ;Oœ¨Ô7ÔUW×U`ÒU`ÓUbˆŒÜ.¨vÓ;ˆÔÜ" 6Ó/ˆŒÜ!Ÿ|š|¨C×5JÑ5JÔKˆÖr%   c                ób   <€ V ^8„  d   QhRS[ S[ S[S[3,          S[ S[S[3,          3,          /# rn  )r   rp   )r    r!   s   "€r"   r#   ÚSwinv2Layer.__annotate__g  s8   ø€ ÷ 'ñ 'ÉeÑTYÑZ]Ñ_bÐZbÕTcÑejÑknÑpsÐksÕetÐTtÕNuñ 'r%   c                óî   € \        V P                  V4       UUu. uF  w  r4\        W44      NK  	  ppp\        V P                  WR4       UUUu. uF  w  r4qcV8:  d   ^ MTNK  	  ppppWW3# u uppi u upppi rA  )Úzipr»   Úmin)ri   Útarget_window_sizeÚtarget_shift_sizeÚrÚwrH   Úsrz  s   &&&     r"   ry  Ú!Swinv2Layer._compute_window_shiftg  so   € Ü-0°×1FÑ1FÐHZÔ-[Ô\Ñ-[¡T Q”s˜1–yÑ-[ˆÑ\Ü8;¸D×<QÑ<QÐS^Ô8rÕsÑ8r©W¨Q°1 œ6‘a qÒ(Ñ8rˆ
ÒsØÐ&Ð&ùó ]ùÜss   šA*ÁA0c                ó,  € V P                   ^ 8:  d   R# \        P                  ! V4      p\        P                  ! V4      pWAV P                  ,
          8¬  P	                  4       WAV P                   ,
          8¬  P	                  4       ,           pWRV P                  ,
          8¬  P	                  4       WRV 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.
Nrc  )Nrz   NN)NNrz   NrA   g      YÀ)
rz  r   r  rH   Úlongr  rN   rD   r“   Úmasked_fill)ri   rJ   rK   r  Úh_idxÚw_idxÚh_regionÚw_regionÚimg_maskÚmask_windowsÚ	attn_masks   &&&&       r"   Úget_attn_maskÚSwinv2Layer.get_attn_maskl  sJ  € ð �?‰?˜aÔÙÜ—’˜VÓ$ˆÜ—’˜UÓ#ˆØ 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 P                   W0P                   ,          ,
          V P                   ,          pV P                   W P                   ,          ,
          V P                   ,          p^ ^ ^ V^ V3p\        P                  P                  W4      pW3# rA  )rH   r   r€   r®   )ri   r   rJ   rK   Ú	pad_rightÚ
pad_bottomr¯   s   &&&&   r"   r°   ÚSwinv2Layer.maybe_pad…  sy   € Ø×%Ñ%¨×0@Ñ0@Õ(@Õ@ÀD×DTÑDTÕTˆ	Ø×&Ñ&¨×2BÑ2BÕ)BÕBÀd×FVÑFVÕVˆ
Ø˜˜A˜y¨!¨ZÐ8ˆ
ÜŸ™×)Ñ)¨-ÓDˆØÐ(Ð(r%   c          
      ó¨   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[S[ P                  S[ P                  3,          /# ©r   r   rÊ   ró   Nro   ©r   r   r   rp   r�   )r    r!   s   "€r"   r#   r…  Œ  sU   ø€ ÷ 5ñ 5á—|‘|ð5ñ  ¡¡S �/ð5ñ   $�;ð	5ñ
 
‰u�|‰|™UŸ\™\Ð)Õ	*ñ5r%   c                ó4  € Vw  rEVP                  4       w  rgpTp	VP                  WdWX4      pV P                  WV4      w  rVP                  w  r{rÇV P                  ^ 8”  d2   \
        P                  ! WP                  ) V P                  ) 3RR7      pMTp\        WÐP                  4      pVP                  RV P                  V P                  ,          V4      pV P                  W¼VP                  R7      pVe   VP                  VP                  4      pV P                  WïVR7      pV^ ,          pVP                  RV P                  V P                  V4      p\        VV P                  W¼4      pV P                  ^ 8”  d1   \
        P                  ! VV P                  V P                  3RR7      pMTpV
^,          ^ 8„  ;'       g    V
^,          ^ 8„  pV'       d    VRRV1RV1R3,          P                  4       pVP                  WdV,          V4      pV P!                  V4      pW�P#                  V4      ,           pV P%                  V4      pV P'                  V4      pWP#                  V P)                  V4      4      ,           pV'       d   VV^,          3pV# V3pV# )rÍ   )ÚshiftsÚdimsr  N)ró   rz   )rT   r   rA   )ru   rD   r°   rC   rz  r   ÚrollrN   rH   r™  r  r  rd  r{  rP   rF   r}  r  r€  r8  r�  )ri   r   rÊ   ró   rJ   rK   rI   r•   ÚchannelsÚshortcutr¯   Ú
height_padÚ	width_padÚshifted_hidden_statesÚhidden_states_windowsr˜  Úattention_outputsr?  Úattention_windowsÚshifted_windowsÚ
was_paddedÚlayer_outputÚlayer_outputss   &&&&                   r"   rš   ÚSwinv2Layer.forwardŒ  s{  € ð )‰ˆØ"/×"4Ñ"4Ó"6Ñˆ
�xØ ˆð &×*Ñ*¨:¸uÓOˆØ$(§N¡N°=È%Ó$PÑ!ˆØ&3×&9Ñ&9Ñ#ˆ�yà�?‰?˜QÔÜ$)§J¢J¨}ÇÁÐFVÐY]×YhÑYhÐXhÐEiÐpvÔ$wÑ!à$1Ð!ô !1Ð1F×HXÑHXÓ YÐØ 5× :Ñ :¸2¸t×?OÑ?OÐRV×RbÑRbÕ?bÐdlÓ mÐØ×&Ñ& zÀM×DWÑDWÐ&ÓXˆ	ØÒ Ø!Ÿ™Ð%:×%AÑ%AÓBˆIà ŸN™NÐ+@Ð_p˜NÓqÐà,¨QÕ/Ðà,×1Ñ1°"°d×6FÑ6FÈ×HXÑHXÐZbÓcÐÜ(Ð):¸D×<LÑ<LÈjÓdˆð �?‰?˜QÔÜ %§
¢
¨?ÀDÇOÁOÐUY×UdÑUdÐCeÐlrÔ sÑà /Ðà •] QÑ&×;Ð;¨*°Q­-¸!Ñ*;ˆ
ßØ 1°!°W°f°W¸f¸u¸fÀaÐ2GÕ H× SÑ SÓ UÐà-×2Ñ2°:È½~ÈxÓXÐØ×-Ñ-Ð.?Ó@ˆØ §>¡>°-Ó#@Õ@ˆà×(Ñ(¨Ó7ˆØ—{‘{ <Ó0ˆØ$§~¡~°d×6JÑ6JÈ<Ó6XÓ'YÕYˆç@Q˜Ð'8¸Õ';Ð<ˆØÐð YeÐWfˆØÐr%   )	r{  r  r»   r€  r�  r}  r8  rz  rH   )rc  rÍ   rÍ   rœ   )r'   r(   r)   r*   rV   ry  r™  r°   rš   r-   r.   rž   rŸ   s   @@r"   ru  ru  M  s.   ù‡ € ÷L÷2'ð 'ò
ò2)÷5÷ 5ò 5r%   ru  c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚSwinv2StageiÄ  c	                óŽ  <€ \         SV `  4        Wn        W n        . p	\	        V4       FM  p
\        TTTTWj,          V
^,          ^ 8X  d   ^ MVP                  ^,          VR7      pV	P                  V4       KO  	  \        P                  ! V	4      V n
        Ve   V! W2\        P                  R7      V n        MRV n        RV n        R# )r   )rh   ry   r»   rî   r‚  rz  rÞ   N)ry   r¼   F)rU   rV   rh   ry   Úrangeru  rH   Úappendr   Ú
ModuleListÚblocksrb   Ú
downsampleÚpointing)ri   rh   ry   r»   Údepthrî   r  rº  rÞ   r¹  ÚiÚblockrk   s   &&&&&&&&&   €r"   rV   ÚSwinv2Stage.__init__Å  s®   ø€ ô 	‰ÑÔØŒØŒØˆÜ�u–ˆAÜØØØ!1Ø#Ø(�|Ø!" Q¥¨!¤™1°&×2DÑ2DÈÕ2IØ'=ôˆEð �M‰M˜%Ö ñ ô —m’m FÓ+ˆŒð Ò!Ù(Ð)9ÌrÏ|É|Ô\ˆD�Oà"ˆDŒOàˆŽr%   c          	      óŽ   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[S[ P                  ,          /# r   r¡  )r    r!   s   "€r"   r#   ÚSwinv2Stage.__annotate__á  sL   ø€ ÷ ñ á—|‘|ðñ  ¡¡S �/ðñ   $�;ð	ñ
 
‰u�|‰|Õ	ñr%   c                ó:  € Vw  rE\        V P                  4       F  w  rgV! VVV4      pV^ ,          pK  	  Tp	V P                  e6   V^,           ^,          V^,           ^,          rºWEW«3pV P                  W’4      pMWEWE3pWV3pV'       d   VXR,          ,          pV# r=  )Ú	enumerater¹  rº  )ri   r   rÊ   ró   rJ   rK   r½  Úlayer_moduler±  Ú!hidden_states_before_downsamplingÚheight_downsampledÚwidth_downsampledr–   Ústage_outputss   &&&&          r"   rš   ÚSwinv2Stage.forwardá  s¶   € ð )‰ˆÜ(¨¯©Ö5‰OˆAÙ(ØØ Ø!óˆMð *¨!Õ,ŠMñ  6ð -:Ð)Ø�?‰?Ò&Ø5;¸aµZÀAÕ4EÈÐPQÍ	ÐVWÕGWÐ 1Ø!'Ð0BÐ VÐØ ŸO™OÐ,MÓ`‰Mà!'°Ð >Ðà&ÐK\Ð]ˆçØ˜]¨2Õ.Õ.ˆMØÐr%   )r¹  rh   ry   rº  r»  rA  rœ   r3  rŸ   s   @@r"   r´  r´  Ä  s   ù‡ € ÷÷8÷ ò r%   r´  c                   óL   a a€ ] tR tRt oRV 3R lltRV3R lR lltRtVtV ;t# )ÚSwinv2Encoderi   c                ó´  <€ \         S	V `  4        \        VP                  4      V n        Wn        V P
                  P                  e   VP                  p\        P                  ! ^ VP                  \        VP                  4      RR7       Uu. uF  qDP                  4       NK  	  pp. p\        V P                  4       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 W7,          R7      pVP%                  V4       Kñ  	  \&        P(                  ! V4      V n        RV n        R # u upi )NÚcpu)rd  )rh   ry   r»   r¼  rî   r  rº  rÞ   F)rU   rV   ÚlenÚdepthsÚ
num_layersrh   Úpretrained_window_sizesr   Úlinspacer‚  r  Úitemr¶  r´  rp   r^   rî   r¹   r·  r   r¸  ÚlayersÚgradient_checkpointing)
ri   rh   rZ   rÑ  ÚxÚdprrÔ  Úi_layerÚstagerk   s
   &&&&     €r"   rV   ÚSwinv2Encoder.__init__  sm  ø€ Ü‰ÑÔÜ˜fŸm™mÓ,ˆŒØŒØ�;‰;×.Ñ.Ò:Ø&,×&DÑ&DÐ#Ü!&§¢°°6×3HÑ3HÌ#ÈfÏmÉmÓJ\ÐejÕ!kÓlÑ!k˜A�v‰vŽxÑ!kˆÐlàˆÜ˜TŸ_™_Ö-ˆGÜØÜ˜×(Ñ(¨1¨g­:Õ5Ó6Ø"+¨A¥,°1°gµ:Õ">À	È!ÅÐQRÐT[ÕQ[Õ@\Ð!]Ø—m‘m GÕ,Ø ×*Ñ*¨7Õ3Øœc &§-¡-°°Ð"9Ó:¼SÀÇÁÈ}ÐQXÐ[\ÕQ\ÐA]Ó=^Ð_Ø29¿O¹OÈaÕ<OÔ2OÕ-ÐVZØ'>Õ'Gô	ˆEð �M‰M˜%Ö ñ .ô —m’m FÓ+ˆŒà&+ˆÖ#ùò# ms   ÂGc                ó¶   <€ V ^8„  d   QhRS[ P                  RS[S[S[3,          RS[R,          RS[R,          RS[R,          RS[R,          RS[S[,          /# )	r   r   rÊ   ró   NÚoutput_hidden_statesÚ(output_hidden_states_before_downsamplingÚreturn_dictro   )r   r   r   rp   r�   r   )r    r!   s   "€r"   r#   ÚSwinv2Encoder.__annotate__  s|   ø€ ÷ C
ñ C
á—|‘|ðC
ñ  ¡¡S �/ðC
ñ   $�;ð	C
ñ
 # T�kðC
ñ 37¸µ+ðC
ñ ˜D•[ðC
ñ 
Ñ$Õ	$ñC
r%   c                óò  € V'       d   RMR pV'       d   RMR pV'       d   RMR p	V'       dL   VP                   w  r«pVP                  ! V
.VOVN5!  pVP                  ^ ^^^4      pWq3,          pW�3,          p\        V P                  4       EF   w  rïV! VVV4      pV^ ,          pV^,          pV^,          pVR,          VR,          3pV'       df   V'       d^   VP                   w  r«pVP                  ! V
.V^ ,          V^,          3OVN5!  pVP                  ^ ^^^4      pVV3,          pW�3,          pM[V'       dT   V'       gL   VP                   w  r«pVP                  ! V
.VOVN5!  pVP                  ^ ^^^4      pWq3,          pW�3,          pV'       g   EK  V	VR,          ,          p	EK#  	  V'       g1   \
        ;QJ d    . R WW˜3 4       F  NK  	  5# ! R WW˜3 4       4      # \        VVV	VR7      # )N:é   NNc              3   ó2   "  € T F  pVf   K	  Vx € K  	  R # 5ir(  r&   )Ú.0Úvs   & r"   Ú	<genexpr>Ú(Swinv2Encoder.forward.<locals>.<genexpr>R  s   é € ð ál�AØ÷ ’Ûlùs   ‚�
)r   r   r   r   r&   rø   rA   )rC   rD   r   rÃ  rÔ  r   r   )ri   r   rÊ   ró   rÜ  rÝ  rÞ  Úall_hidden_statesÚall_reshaped_hidden_statesÚall_self_attentionsrI   r•   r«   Úreshaped_hidden_stater½  rÄ  r±  rÅ  r–   s   &&&&&&&            r"   rš   ÚSwinv2Encoder.forward  s:  € ÷ #7™B¸DÐß+?¡RÀTÐ"ß$5™b¸4ÐçØ)6×)<Ñ)<Ñ&ˆJ˜;à$1×$6Ò$6°zÐ$bÐDTÐ$bÐVaÓ$bÐ!Ø$9×$AÑ$AÀ!ÀQÈÈ1Ó$MÐ!ØÐ!1Õ1ÐØ&Ð*BÕBÐ&ä(¨¯©×5‰OˆAÙ(ØØ Ø!óˆMð *¨!Õ,ˆMØ0=¸aÕ0@Ð-Ø -¨aÕ 0Ðà 1°"Õ 5Ð7HÈÕ7LÐMÐç#×(PØ-N×-TÑ-TÑ*�
˜{ð )J×(NÒ(NØð)Ø"3°AÕ"6Ð8IÈ!Õ8LÐ!Mð)ØOZó)Ð%ð )>×(EÑ(EÀaÈÈAÈqÓ(QÐ%Ø!Ð&GÐ%IÕIÐ!Ø*Ð.FÕFÑ*ß%×.VØ-:×-@Ñ-@Ñ*�
˜{à(5×(:Ò(:¸:Ð(fÐHXÐ(fÐZeÓ(fÐ%Ø(=×(EÑ(EÀaÈÈAÈqÓ(QÐ%Ø!Ð%5Õ5Ð!Ø*Ð.FÕFÐ*ç Ò Ø# }°RÕ'8Õ8Ó#ñA  6÷D ß”5ñ à'Ð<OÑló—5ð �5ñ à'Ð<OÑlóó ð ô #Ø+Ø+Ø*Ø#=ô	
ð 	
r%   )rh   rÕ  rÔ  rÐ  ))rÍ   rÍ   rÍ   rÍ   )FFFTr3  rŸ   s   @@r"   rË  rË     s   ù‡ € ÷,÷2C
÷ C
ò C
r%   rË  c                   ó|   a a€ ] tR tRt oRtRt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# )
ÚSwinv2PreTrainedModeli`  Úswinv2rŒ   Tr´  c                óT  <€ \         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      '       dŒ   \
        P                  ! VP                  \        P                  ! ^
4      4       VP                  4       w  r#\
        P                  ! VP                  V4       \
        P                  ! VP                   V4       R# R# )zInitialize the weightsN)rU   Ú_init_weightsr¥   rR   r_   ÚinitÚzeros_ra   rÕ   Ú	constant_rá   rû   rß   rå   Úcopy_rç   rè   )ri   Úmodulerç   rè   rk   s   &&  €r"   rð  Ú#Swinv2PreTrainedModel._init_weightsi  sÌ   ø€ ô 	‰Ñ˜fÔ%Ü�fÔ.×/Ò/Ø× Ñ Ò,Ü—’˜F×-Ñ-Ô.Ø×)Ñ)Ò5Ü—’˜F×6Ñ6Ö7ñ 6ä˜Ô 3×4Ò4Ü�NŠN˜6×-Ñ-¬t¯xªx¸«|Ô<Ø=C×=aÑ=aÓ=cÑ:Ð!Ü�JŠJ�v×3Ñ3Ð5JÔKÜ�JŠJ�v×5Ñ5Ð7NÖOñ	 5r%   c                ó&   <€ V ^8„  d   Qh/ S[ ;R&   # )r   rh   r   )r    r!   s   "€r"   r#   Ú"Swinv2PreTrainedModel.__annotate__`  s   ø‡ ‚ áÑò r%   r&   )Úimage)r'   r(   r)   r*   Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesr   Úno_gradrð  r,   r-   r.   rž   rŸ   s   @@r"   rí  rí  `  sG   ù‡ € ð !ÐØ$€OØ!ÐØ&*Ð#Ø&˜Ðà
‡]‚]ƒ_ôPó ðP÷ … r%   rí  c                   ó\   a a€ ] tR tRt oRV 3R lltR t]RV3R lR ll4       tRtVt	V ;t
# )	ÚSwinv2Modeliy  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.
)rj   rw  N)rU   rV   rh   rÎ  rÏ  rÐ  rp   r^   Únum_featuresrR   rn   rË  r[   Úencoderr   rb   r|  Ú	layernormÚAdaptiveAvgPool1dÚpoolerÚ	post_init)ri   rh   Úadd_pooling_layerrj   rk   s   &&&&€r"   rV   ÚSwinv2Model.__init__|  s¯   ø€ ô 	‰Ñ˜Ô ØŒÜ˜fŸm™mÓ,ˆŒÜ × 0Ñ 0°1¸¿¹È1Õ9LÕ3MÕ MÓNˆÔä*¨6ÔQˆŒÜ$ V¯_©_×-GÑ-GÓHˆŒäŸš d×&7Ñ&7¸V×=RÑ=RÔSˆŒß1B”b×*Ò*¨1Ô-ÈˆŒð 	�‰Ör%   c                ó.   € V P                   P                  # r(  ©rn   rX   rq  s   &r"   Úget_input_embeddingsÚ Swinv2Model.get_input_embeddings‘  ó   € Ø�‰×/Ñ/Ð/r%   c                óÂ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[RS[R,          RS[S[,          /# ©	r   rŒ   Nr�   ró   rÜ  r‰   rÞ  ro   )r   r   rŽ   r�   r   r1   )r    r!   s   "€r"   r#   ÚSwinv2Model.__annotate__•  sy   ø€ ÷ 6
ñ 6
á×'Ñ'¨$Õ.ð6
ñ ×)Ñ)¨DÕ0ð6
ñ   $�;ð	6
ñ
 # T�kð6
ñ #'ð6
ñ ˜D•[ð6
ñ 
Ñ"Õ	"ñ6
r%   c                ót  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pVf   \	        R4      hV P                  WVR7      w  r‰V P                  VV	VVVR7      p
V
^ ,          pV P                  V4      pRpV P                  e9   V P                  VP                  ^^4      4      p\        P                  ! V^4      pV'       g   W¼3V
R,          ,           pV# \        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).
Nz You have to specify pixel_values)r�   r‰   )ró   rÜ  rÞ  r{   )r   r3   r   r   r   )rh   ró   rÜ  rÞ  rÚ   rn   r  r  r  rE   r   r¶   r1   r   r   r   )ri   rŒ   r�   ró   rÜ  r‰   rÞ  ÚkwargsÚembedding_outputrÊ   Úencoder_outputsÚsequence_outputÚpooled_outputr8  s   &&&&&&&,      r"   rš   ÚSwinv2Model.forward”  sA  € ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆàÒÜÐ?Ó@Ð@à-1¯_©_ØÐTlð .=ó .
Ñ*Ðð Ÿ,™,ØØØ/Ø!5Ø#ð 'ó 
ˆð *¨!Õ,ˆØŸ.™.¨Ó9ˆàˆØ�;‰;Ò"Ø ŸK™K¨×(AÑ(AÀ!ÀQÓ(GÓHˆMÜ!ŸMšM¨-¸Ó;ˆMçØ%Ð5¸ÈÕ8KÕKˆFàˆMä Ø-Ø'Ø)×7Ñ7Ø&×1Ñ1Ø#2×#IÑ#Iô
ð 	
r%   )rh   rn   r  r  r  rÐ  r  )TF©NNNNFN)r'   r(   r)   r*   rV   r  r   rš   r-   r.   rž   rŸ   s   @@r"   r  r  y  s-   ù‡ € ÷ò*0ð ÷6
ñ 6
ó ÷6
ð 6
r%   r  a~  
        Swinv2 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                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚSwinv2ForMaskedImageModelingiÎ  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	  rj   )Úin_channelsÚout_channelsr¢   N)rU   rV   r  rî  rp   r^   rÐ  r   râ   r©   Úencoder_striderL   ÚPixelShuffleÚdecoderr  )ri   rh   r  rk   s   && €r"   rV   Ú%Swinv2ForMaskedImageModeling.__init__Ý  sŸ   ø€ Ü‰Ñ˜Ô ä! &¸EÐRVÔWˆŒä˜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,          RS[R,          RS[RS[R,          RS[S[,          /# r  )r   r   rŽ   r�   r   r6   )r    r!   s   "€r"   r#   Ú)Swinv2ForMaskedImageModeling.__annotate__î  s‚   ø€ ÷ S
ñ S
á×'Ñ'¨$Õ.ðS
ñ ×)Ñ)¨DÕ0ðS
ñ   $�;ð	S
ñ
 # T�kðS
ñ #'ðS
ñ ˜D•[ðS
ñ 
Ñ0Õ	0ñS
r%   c           	     ó.  € Ve   TMV P                   P                  pV P                  VVVVVVR7      pV^ ,          p	V	P                  ^^4      p	V	P                  w  r«p\
        P                  ! VR,          4      ;rÞV	P                  W«WÞ4      p	V P                  V	4      pRpVEe   V P                   P                  V P                   P                  ,          pVP                  R	VV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'       g"   V3VR,          ,           pVe   V3V,           # T# \'        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, Swinv2ForMaskedImageModeling
>>> 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/swinv2-tiny-patch4-window8-256")
>>> model = Swinv2ForMaskedImageModeling.from_pretrained("microsoft/swinv2-tiny-patch4-window8-256")

>>> 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, 256, 256]
```N)r�   ró   rÜ  r‰   rÞ  rs   Únone)rÄ   gñhãˆµøä>ºr   NN)r8   r9   r   r   r   rA   )rh   rÞ  rî  rE   rC   rû   rh  r~   r"  r¤   rg   Úrepeat_interleaver“   rF   r   r€   Úl1_lossr  rL   r6   r   r   r   )ri   rŒ   r�   ró   rÜ  r‰   rÞ  r  r
  r  rI   rL   Úsequence_lengthrJ   rK   Úreconstructed_pixel_valuesÚmasked_im_lossru   r™   Úreconstruction_lossr8  s   &&&&&&&,             r"   rš   Ú$Swinv2ForMaskedImageModeling.forwardí  s×  € ðP &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà—+‘+ØØ+Ø/Ø!5Ø%=Ø#ð ó 
ˆð " !�*ˆà)×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çØ0Ð2°W¸Rµ[Õ@ˆFØ3AÒ3M�^Ð%¨Õ.ÐYÐSYÐYä.ØØ5Ø!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r%   )r"  rî  r  ©
r'   r(   r)   r*   rV   r   rš   r-   r.   rž   rŸ   s   @@r"   r  r  Î  s,   ù‡ € õð  ÷S
ñ S
ó ÷S
ð S
r%   r  aæ  
    Swinv2 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 SwinV2 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                   óR   a a€ ] tR tRt oV 3R lt]RV3R lR ll4       tRtVtV ;t	# )ÚSwinv2ForImageClassificationiD  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)rU   rV   Ú
num_labelsr  rî  r   rÃ   r  r~  Ú
classifierr  )ri   rh   rk   s   &&€r"   rV   Ú%Swinv2ForImageClassification.__init__T  sx   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ! &Ó)ˆŒð GM×FWÑFWÐZ[ÔF[ŒB�IŠI�d—k‘k×.Ñ.°×0AÑ0AÔBÔac×alÒalÓanð 	Œð
 	�‰Ör%   c                óÂ   <€ V ^8„  d   QhRS[ P                  R,          RS[ P                  R,          RS[R,          RS[R,          RS[RS[R,          RS[S[,          /# )	r   rŒ   NÚlabelsró   rÜ  r‰   rÞ  ro   )r   r   Ú
LongTensorr�   r   r<   )r    r!   s   "€r"   r#   Ú)Swinv2ForImageClassification.__annotate__c  sy   ø€ ÷ ,
ñ ,
á×'Ñ'¨$Õ.ð,
ñ × Ñ  4Õ'ð,
ñ   $�;ð	,
ñ
 # T�kð,
ñ #'ð,
ñ ˜D•[ð,
ñ 
Ñ,Õ	,ñ,
r%   c                óŒ  € Ve   TMV P                   P                  pV P                  VVVVVR7      pV^,          p	V P                  V	4      p
RpVe   V P	                  W*V P                   4      pV'       g"   V
3VR,          ,           pVe   V3V,           # T# \        VV
VP                  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).
N)ró   rÜ  r‰   rÞ  r(  )r8   r>   r   r   r   )	rh   rÞ  rî  r5  Úloss_functionr<   r   r   r   )ri   rŒ   r8  ró   rÜ  r‰   rÞ  r  r
  r  r>   r8   r8  s   &&&&&&&,     r"   rš   Ú$Swinv2ForImageClassification.forwardb  sÎ   € ð" &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà—+‘+ØØ/Ø!5Ø%=Ø#ð ó 
ˆð   �
ˆà—‘ Ó/ˆàˆØÒØ×%Ñ% f°d·k±kÓBˆDçØ�Y ¨¥Õ,ˆFØ)-Ò)9�T�G˜fÕ$ÐE¸vÐEä*ØØØ!×/Ñ/Ø×)Ñ)Ø#*×#AÑ#Aô
ð 	
r%   )r5  r4  rî  r  r0  rŸ   s   @@r"   r2  r2  D  s(   ù‡ € õ ð ÷,
ñ ,
ó ÷,
ð ,
r%   r2  zO
    Swinv2 backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ól   a a€ ] tR tRt oV 3R ltR t]]]RV3R lR ll4       4       4       t	Rt
VtV ;t# )ÚSwinv2Backbonei’  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4      V n	        \        WP                  P                  4      V n        V P                  4        R# u upi )r   N)rU   rV   r^   r¶  rÎ  rÏ  rp   r  rR   rn   rË  r[   r  r  )ri   rh   r½  rk   s   && €r"   rV   ÚSwinv2Backbone.__init__˜  s“   ø€ Ü‰Ñ˜Ô à#×-Ñ-Ð.ÔX]Ô^aÐbh×boÑboÓ^pÔXqÓ1rÑXqÐST´#°f×6FÑ6FÈÈAÍÕ6MÖ2NÑXqÑ1rÕrˆÔÜ*¨6Ó2ˆŒÜ$ V¯_©_×-GÑ-GÓHˆŒð 	�‰Öùò 2ss   ½,B=c                ó.   € V P                   P                  # r(  r  rq  s   &r"   r  Ú#Swinv2Backbone.get_input_embeddings¢  r  r%   c          
      ób   <€ V ^8„  d   QhRS[ RS[R,          RS[R,          RS[R,          RS[/# )r   rŒ   ró   NrÜ  rÞ  ro   )r   r�   r
   )r    r!   s   "€r"   r#   ÚSwinv2Backbone.__annotate__¨  sP   ø€ ÷ F
ñ F
áðF
ñ   $�;ðF
ñ # T�kð	F
ñ
 ˜D•[ðF
ñ 
ñF
r%   c           	     ó‚  € Ve   TMV P                   P                  pVe   TMV P                   P                  pVe   TMV P                   P                  pV P	                  V4      w  rgV P                  VVVRRVR7      pV'       d   VP                  MVR,          p	Rp
\        V P                  V	4       F   w  r¼W°P                  9   g   K  W¬3,          p
K"  	  V'       g6   V
3pV'       d   WØ^,          3,          pV'       d   WØ^,          3,          pV# \        T
V'       d   VP                  MR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("microsoft/swinv2-tiny-patch4-window8-256")
>>> model = AutoBackbone.from_pretrained(
...     "microsoft/swinv2-tiny-patch4-window8-256", 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, 2048, 7, 7]
```NT)ró   rÜ  rÝ  rÞ  )Úfeature_mapsr   r   rA   r&   )rh   rÞ  rÜ  ró   rn   r  r   r‡  Ústage_namesÚout_featuresr
   r   r   )ri   rŒ   ró   rÜ  rÞ  r  r  rÊ   r
  r   rG  rÙ  Úhidden_stater8  s   &&&&&,        r"   rš   ÚSwinv2Backbone.forward¥  s0  € ðJ &1Ò%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ò$DÑ È$Ï+É+×JjÑJjð 	ð 2CÒ1NÑ-ÐTX×T_ÑT_×TqÑTqÐà-1¯_©_¸\Ó-JÑ*Ðà—,‘,ØØØ/Ø!%Ø59Ø#ð ó 
ˆ÷ ;F˜×6Ò6È7ÐSUÍ;ˆàˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Ö)Ø Õ/’ñ $H÷ Ø"�_ˆFß#Ø 1�:˜-Õ'�ß Ø 1�:˜-Õ'�ØˆMäØ%ß3G˜'×/Ò/ÈTØ×)Ñ)ô
ð 	
r%   )rn   r  r  )NNN)r'   r(   r)   r*   rV   r  r   r   r   rš   r-   r.   rž   rŸ   s   @@r"   r?  r?  ’  sA   ù‡ € õò0ð Ø Ø÷F
ñ F
ó ó !ó ÷F
ð F
r%   r?  )r2  r  r  rí  r?  )<r+   Úcollections.abcr¦   rû   Údataclassesr   r   r   r   Ú r   rñ  Úactivationsr   Úbackbone_utilsr   r   Úmodeling_layersr	   Úmodeling_outputsr
   Úmodeling_utilsr   Úutilsr   r   r   r   Úutils.genericr   Úconfiguration_swinv2r   Ú
get_loggerr'   Úloggerr   r1   r6   r<   rN   rP   r½   rR   rW   r¹   rÕ   r&  r5  rC  rS  r[  ru  r´  rË  rí  r  r  r2  r?  Ú__all__r&   r%   r"   Ú<module>rZ     s©  ðñ (ã Û Ý !ã ß å &Ý !ß HÝ 9Ý .Ý -ß DÓ DÝ -Ý .ð 
×	Ò	˜HÓ	%€ñ ðôð
 ôH˜+ó Hó óðHñ  ðôð
 ôH˜ó Hó óðHñ& ðôð
 ôH kó Hó óðHñ* ðôð
 ôH +ó Hó óðHò,	òôY-�r—y‘yô Y-ôz'-˜BŸI™Iô '-ôT3˜Ÿ™ô 3ôlE>˜"Ÿ)™)ô E>ôR
�r—y‘yô 
ô�b—i‘iô ô6˜Ÿ™ô ô 	�2—9‘9ô 	ô%�R—Y‘Yô %ô0t�"—)‘)ô tôn9Ð,ô 9ôx]
�B—I‘Iô ]
ð@ ôP˜Oó Pó ðPð0 ôP
Ð'ó P
ó ðP
ñf ð
ôôe
Ð#8ó e
óðe
ñP ðôô<
Ð#8ó <
óð<
ñ~ ðôô
W
�]Ð$9ó W
óð
W
òt‚r%   