+
     °³j£™  ã                   óP  € ^ RI t ^ RIHt ^ RIHtHtHt ^ RIt^ RIH	u H
t ^ RIH	t	Ht ^RIHtHt ^RIHt ^RIHtHt ^RIHt ^R	IHtHtHt ^R
IHt ^RIHtHt . RCOt R R lt!]PD                  PG                  R4       R R lt$]PD                  PG                  R4        ! R R]	PJ                  4      t& ! R R]	PJ                  4      t'RDR R llt(]PD                  PG                  R 4        ! R! R"]	PJ                  4      t) ! R# R$])4      t* ! R% R&]	PJ                  4      t+ ! R' R(]+4      t, ! R) R]	PJ                  4      t-R* R+ lt.R,]/t/ ! R- R]4      t0 ! R. R]4      t1 ! R/ R]4      t2 ! R0 R]4      t3 ! R1 R]4      t4 ! R2 R]4      t5]! 4       ]! R3]0Pl                  3R47      R5RR6R/R7 R8 ll4       4       t7]! 4       ]! R3]1Pl                  3R47      R5RR6R/R9 R: ll4       4       t8]! 4       ]! R3]2Pl                  3R47      R5RR6R/R; R< ll4       4       t9]! 4       ]! R3]3Pl                  3R47      R5RR6R/R= R> ll4       4       t:]! 4       ]! R3]4Pl                  3R47      R5RR6R/R? R@ ll4       4       t;]! 4       ]! R3]5Pl                  3R47      R5RR6R/RA RB ll4       4       t<R# )Eé    N)Úpartial)ÚAnyÚCallableÚOptional)ÚnnÚTensor)ÚMLPÚPermute)ÚStochasticDepth)ÚImageClassificationÚInterpolationMode)Ú_log_api_usage_once)Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interfaceÚSwinTransformerÚSwin_T_WeightsÚSwin_S_WeightsÚSwin_B_WeightsÚSwin_V2_T_WeightsÚSwin_V2_S_WeightsÚSwin_V2_B_Weightsc                óX   € V ^8„  d   QhR\         P                  R\         P                  /# ©é   ÚxÚreturn©Útorchr   )Úformats   "Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchvision/models/swin_transformer.pyÚ__annotate__r%   #   s"   € ÷ ñ œ%Ÿ,™,ð ¬5¯<©<ñ ó    c           
      óú   € V P                   RR w  rp\        P                  ! V ^ ^ ^ V^,          ^ V^,          34      p V R,          pV R,          pV R,          pV R,          p\        P                  ! WEWg.R4      p V # )é   Néýÿÿÿ).ºr   Nr   r*   ºNNN).ºé   Nr   r*   r+   ).r*   r,   r+   ).r,   r,   r+   éÿÿÿÿ)ÚshapeÚFÚpadr"   Úcat)r   ÚHÚWÚ_Úx0Úx1Úx2Úx3s   &       r$   Ú_patch_merging_padr:   #   s€   € Ø�g‰g�b�cˆl�G€Aˆ!Ü	�Šˆa�!�Q˜˜1˜q�5 ! Q¨¥UÐ+Ó,€AØ	
ÐÕ	€BØ	
ÐÕ	€BØ	
ÐÕ	€BØ	
ÐÕ	€BÜ�	Š	�2˜2Ð" BÓ'€AØ€Hr&   r:   c                óš   € V ^8„  d   QhR\         P                  R\         P                  R\        \        ,          R\         P                  /# )r   Úrelative_position_bias_tableÚrelative_position_indexÚwindow_sizer    )r"   r   ÚlistÚint)r#   s   "r$   r%   r%   1   s>   € ÷ "ñ "Ü"'§,¡,ð"ÜINÏÉð"ÜdhÔilÕdmð"ä
‡\�\ñ"r&   c                 óÈ   € V^ ,          V^,          ,          pW,          pVP                  W3R4      pVP                  ^^ ^4      P                  4       P                  ^ 4      pV# )r   r.   )ÚviewÚpermuteÚ
contiguousÚ	unsqueeze)r<   r=   r>   ÚNÚrelative_position_biass   &&&  r$   Ú_get_relative_position_biasrH   1   sb   € ð 	�A�˜ Q�Õ'€AØ9ÕRÐØ3×8Ñ8¸¸rÓBÐØ3×;Ñ;¸A¸qÀ!ÓD×OÑOÓQ×[Ñ[Ð\]Ó^ÐØ!Ð!r&   rH   c                   ón   a a€ ] tR t^>t oRt]P                  3V3R lV 3R llltV3R lR ltRt	Vt
V ;t# )ÚPatchMergingzŒPatch Merging Layer.
Args:
    dim (int): Number of input channels.
    norm_layer (nn.Module): Normalization layer. Default: nn.LayerNorm.
c                óN   <€ V ^8„  d   QhRS[ RS[RS[P                  3,          /# ©r   ÚdimÚ
norm_layer.©r@   r   r   ÚModule)r#   Ú__classdict__s   "€r$   r%   ÚPatchMerging.__annotate__E   ó(   ø€ ÷ (ñ (™Cð (©X°c¹2¿9¹9°nÕ-Eñ (r&   c                óÆ   <€ \         SV `  4        \        V 4       Wn        \        P
                  ! ^V,          ^V,          RR7      V n        V! ^V,          4      V n        R# ©é   F©ÚbiasN©ÚsuperÚ__init__r   rM   r   ÚLinearÚ	reductionÚnorm©ÚselfrM   rN   Ú	__class__s   &&&€r$   r[   ÚPatchMerging.__init__E   óG   ø€ Ü‰ÑÔÜ˜DÔ!ØŒÜŸš 1 s¥7¨A°­G¸%Ô@ˆŒÙ˜q 3�wÓ'ˆŽ	r&   c                ó    <€ V ^8„  d   QhRS[ /# ©r   r   ©r   )r#   rQ   s   "€r$   r%   rR   L   ó   ø€ ÷ 
ñ 
™ñ 
r&   c                ó`   € \        V4      pV P                  V4      pV P                  V4      pV# ©zƒ
Args:
    x (Tensor): input tensor with expected layout of [..., H, W, C]
Returns:
    Tensor with layout of [..., H/2, W/2, 2*C]
)r:   r^   r]   ©r`   r   s   &&r$   ÚforwardÚPatchMerging.forwardL   s.   € ô ˜qÓ!ˆØ�I‰I�a‹LˆØ�N‰N˜1ÓˆØˆr&   ©rM   r^   r]   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú	LayerNormr[   rk   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©ra   rQ   s   @@r$   rJ   rJ   >   ó.   ù‡ € ñð IKÏÉ÷ (õ (÷
÷ 
ð 
r&   rJ   c                   ón   a a€ ] tR t^Yt oRt]P                  3V3R lV 3R llltV3R lR ltRt	Vt
V ;t# )ÚPatchMergingV2z¤Patch Merging Layer for Swin Transformer V2.
Args:
    dim (int): Number of input channels.
    norm_layer (nn.Module): Normalization layer. Default: nn.LayerNorm.
c                óN   <€ V ^8„  d   QhRS[ RS[RS[P                  3,          /# rL   rO   )r#   rQ   s   "€r$   r%   ÚPatchMergingV2.__annotate__`   rS   r&   c                óÆ   <€ \         SV `  4        \        V 4       Wn        \        P
                  ! ^V,          ^V,          RR7      V n        V! ^V,          4      V n        R# rU   rY   r_   s   &&&€r$   r[   ÚPatchMergingV2.__init__`   rc   r&   c                ó    <€ V ^8„  d   QhRS[ /# re   rf   )r#   rQ   s   "€r$   r%   r}   g   rg   r&   c                ó`   € \        V4      pV P                  V4      pV P                  V4      pV# ri   )r:   r]   r^   rj   s   &&r$   rk   ÚPatchMergingV2.forwardg   s.   € ô ˜qÓ!ˆØ�N‰N˜1ÓˆØ�I‰I�a‹LˆØˆr&   rm   rn   rx   s   @@r$   r{   r{   Y   ry   r&   r{   Tc                óB  € V ^8„  d   QhR\         R\         R\         R\         R\        \        ,          R\        R\        \        ,          R\        R	\        R
\        \         ,          R\        \         ,          R\        \
        P                   ,          R\        R\         /# )r   ÚinputÚ
qkv_weightÚproj_weightrG   r>   Ú	num_headsÚ
shift_sizeÚattention_dropoutÚdropoutÚqkv_biasÚ	proj_biasÚlogit_scaleÚtrainingr    )r   r?   r@   Úfloatr   r"   Úbool)r#   s   "r$   r%   r%   t   s¿   € ÷ pñ pÜðpäðpô ðpô #ð	pô
 ”c•ðpô ðpô ”S•	ðpô ðpô ðpô ”vÕðpô œÕðpô œ%Ÿ,™,Õ'ðpô ðpô ñpr&   c           	     óÚ  € V P                   w  rÞppV^,          Wô^,          ,          ,
          V^,          ,          pV^ ,          Wä^ ,          ,          ,
          V^ ,          ,          p\        P                  ! V ^ ^ ^ V^ V34      pVP                   w  ppppVP                  4       pV^ ,          V8¼  d   ^ V^ &   V^,          V8¼  d   ^ V^&   \	        V4      ^ 8”  d,   \
        P                  ! VV^ ,          ) V^,          ) 3R	R7      pVV^ ,          ,          VV^,          ,          ,          pVP                  VVV^ ,          ,          V^ ,          VV^,          ,          V^,          V4      pVP                  ^ ^^^^^4      P                  VV,          V^ ,          V^,          ,          V4      pVeF   V	eB   V	P                  4       p	V	P                  4       ^,          pV	V^V,           P                  4        \        P                  ! VW4      pVP                  VP                  ^ 4      VP                  ^4      ^VVV,          4      P                  ^^ ^^^4      pV^ ,          V^,          V^,          pppVeŠ   \        P                  ! VR
R7      \        P                  ! VR
R7      P!                  RR
4      ,          p\
        P"                  ! V\$        P&                  ! R4      R7      P)                  4       pVV,          pM8VVV,          R,          ,          pVP+                  VP!                  RR
4      4      pVV,           p\	        V4      ^ 8”  Ed(   VP-                  VV34      p^ V^ ,          ) 3V^ ,          ) V^ ,          ) 3V^ ,          ) R33p^ V^,          ) 3V^,          ) V^,          ) 3V^,          ) R33p ^ p!V F<  p"V  F3  p#V!VV"^ ,          V"^,          1V#^ ,          V#^,          13&   V!^,          p!K5  	  K>  	  VP                  VV^ ,          ,          V^ ,          VV^,          ,          V^,          4      pVP                  ^ ^^^4      P                  VV^ ,          V^,          ,          4      pVP/                  ^4      VP/                  ^4      ,
          pVP1                  V^ 8g  \3        R4      4      P1                  V^ 8H  \3        R4      4      pVP                  VP                  ^ 4      V,          VVVP                  ^4      VP                  ^4      4      pVVP/                  ^4      P/                  ^ 4      ,           pVP                  R
VVP                  ^4      VP                  ^4      4      p\        P4                  ! VR
R7      p\        P6                  ! VW|R7      pVP+                  V4      P!                  ^^4      P                  VP                  ^ 4      VP                  ^4      V4      p\        P                  ! VW*4      p\        P6                  ! VWŒR7      pVP                  VVV^ ,          ,          VV^,          ,          V^ ,          V^,          V4      pVP                  ^ ^^^^^4      P                  VVVV4      p\	        V4      ^ 8”  d*   \
        P                  ! VV^ ,          V^,          3R	R7      pVRRV1RV1R3,          P9                  4       pV# )aÒ  
Window based multi-head self attention (W-MSA) module with relative position bias.
It supports both of shifted and non-shifted window.
Args:
    input (Tensor[N, H, W, C]): The input tensor or 4-dimensions.
    qkv_weight (Tensor[in_dim, out_dim]): The weight tensor of query, key, value.
    proj_weight (Tensor[out_dim, out_dim]): The weight tensor of projection.
    relative_position_bias (Tensor): The learned relative position bias added to attention.
    window_size (List[int]): Window size.
    num_heads (int): Number of attention heads.
    shift_size (List[int]): Shift size for shifted window attention.
    attention_dropout (float): Dropout ratio of attention weight. Default: 0.0.
    dropout (float): Dropout ratio of output. Default: 0.0.
    qkv_bias (Tensor[out_dim], optional): The bias tensor of query, key, value. Default: None.
    proj_bias (Tensor[out_dim], optional): The bias tensor of projection. Default: None.
    logit_scale (Tensor[out_dim], optional): Logit scale of cosine attention for Swin Transformer V2. Default: None.
    training (bool, optional): Training flag used by the dropout parameters. Default: True.
Returns:
    Tensor[N, H, W, C]: The output tensor after shifted window attention.
)ÚshiftsÚdimsN)rM   g      Y@)Úmaxç        )ÚprŽ   r+   )r-   r   r.   éþÿÿÿg      à¿g      YÀ)r/   r0   r1   ÚcopyÚsumr"   ÚrollrB   rC   ÚreshapeÚcloneÚnumelÚzero_ÚlinearÚsizeÚ	normalizeÚ	transposeÚclampÚmathÚlogÚexpÚmatmulÚ	new_zerosrE   Úmasked_fillr�   ÚsoftmaxrŠ   rD   )$r„   r…   r†   rG   r>   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   ÚBr3   r4   ÚCÚpad_rÚpad_br   r5   Úpad_HÚpad_WÚnum_windowsÚlengthÚqkvÚqÚkÚvÚattnÚ	attn_maskÚh_slicesÚw_slicesÚcountÚhÚws$   &&&&&&&&&&&&&                       r$   Úshifted_window_attentionr¾   t   sõ  € ðF —‘�J€Aˆ!ˆQà˜�^˜a¨a¥.Õ0Õ0°KÀµNÕB€EØ˜�^˜a¨a¥.Õ0Õ0°KÀµNÕB€EÜ	�Šˆe�a˜˜A˜u a¨Ð/Ó0€AØŸ™Ñ€A€uˆe�Qà—‘Ó"€Jà�1…~˜ÔØˆ
�1‰Ø�1…~˜ÔØˆ
�1‰ô ˆ:ƒ˜ÔÜ�JŠJ�q :¨a¥= .°:¸aµ=°.Ð!AÈÔOˆð ˜K¨�NÕ*¨u¸ÀA½Õ/FÕG€KØ	�‰ˆq�%˜; q�>Õ)¨;°q­>¸5ÀKÐPQÅNÕ;RÐT_Ð`aÕTbÐdeÓf€AØ	�	‰	�!�Q˜˜1˜a Ó#×+Ñ+¨A°­O¸[È½^ÈkÐZ[ÍnÕ=\Ð^_Ó`€Að Ò 8Ò#7Ø—>‘>Ó#ˆØ—‘Ó! QÕ&ˆØ�˜!˜f�*Ð%×+Ñ+Ô-Ü
�(Š(�1�jÓ
+€CØ
�+‰+�a—f‘f˜Q“i §¡¨£¨A¨y¸!¸y½.Ó
I×
QÑ
QÐRSÐUVÐXYÐ[\Ð^_Ó
`€CØ�!�f�c˜!•f˜c !�fˆ!€q€AØÒä�{Š{˜1 "Ô%¬¯ª°A¸2Ô(>×(HÑ(HÈÈRÓ(PÕPˆÜ—k’k +´4·8²8¸E³?ÔC×GÑGÓIˆØ�kÕ!‰à��i• DÕ(Õ(ˆØ�x‰x˜Ÿ™ B¨Ó+Ó,ˆàÐ(Õ(€Dä
ˆ:ƒ˜Õà—K‘K ¨ Ó/ˆ	Ø˜ Q�˜Ð(¨K¸­N¨?¸ZÈ½]¸NÐ*KÈzÐZ[Í}ÈnÐ^bÐMcÐdˆØ˜ Q�˜Ð(¨K¸­N¨?¸ZÈ½]¸NÐ*KÈzÐZ[Í}ÈnÐ^bÐMcÐdˆØˆÛˆAÛ�Ø6;�	˜!˜A�$  1¥˜+ q¨¥t¨a°­d {Ð2Ñ3Ø˜•
’ó ñ ð —N‘N 5¨K¸­NÕ#:¸KÈ½NÈEÐU`ÐabÕUcÕLcÐepÐqrÕesÓtˆ	Ø×%Ñ% a¨¨A¨qÓ1×9Ñ9¸+À{ÐSTÅ~ÐXcÐdeÕXfÕGfÓgˆ	Ø×'Ñ'¨Ó*¨Y×-@Ñ-@ÀÓ-CÕCˆ	Ø×)Ñ)¨)°q©.¼%À»-ÓH×TÑTÐU^ÐbcÑUcÔejÐknÓeoÓpˆ	Ø�y‰y˜Ÿ™ › kÕ1°;À	È1Ï6É6ÐRSË9ÐVW×V\ÑV\Ð]^ÓV_Ó`ˆØ�i×)Ñ)¨!Ó,×6Ñ6°qÓ9Õ9ˆØ�y‰y˜˜Y¨¯©¨q«	°1·6±6¸!³9Ó=ˆä�9Š9�T˜rÔ"€DÜ�9Š9�TÐ.ÔB€Dà�‰�A‹× Ñ   AÓ&×.Ñ.¨q¯v©v°a«y¸!¿&¹&À»)ÀQÓG€AÜ	�Š��KÓ+€AÜ	�	Š	�!�wÔ2€Að 	
�‰ˆq�%˜; q�>Õ)¨5°KÀµNÕ+BÀKÐPQÅNÐT_Ð`aÕTbÐdeÓf€AØ	�	‰	�!�Q˜˜1˜a Ó#×+Ñ+¨A¨u°e¸QÓ?€Aô ˆ:ƒ˜ÔÜ�JŠJ�q *¨Q¥-°¸AµÐ!?ÀfÔMˆð 	
ˆ!ˆRˆaˆR��!��Qˆ,�×"Ñ"Ó$€AØ€Hr&   r¾   c                   óv   a a€ ] tR t^êt oRtRV3R lV 3R llltR tR tV3R lR ltV3R lR	 lt	R
t
VtV ;t# )ÚShiftedWindowAttentionz'
See :func:`shifted_window_attention`.
c                ój   <€ V ^8„  d   QhRS[ RS[S[ ,          RS[S[ ,          RS[ RS[RS[RS[RS[/# ©	r   rM   r>   rˆ   r‡   r‹   rŒ   r‰   rŠ   ©r@   r?   r�   r�   )r#   rQ   s   "€r$   r%   Ú#ShiftedWindowAttention.__annotate__ï   sc   ø€ ÷ .ñ .áð.ñ ™#•Yð.ñ ™•Ið	.ñ
 ð.ñ ð.ñ ð.ñ !ð.ñ ñ.r&   c	                óx  <€ \         S	V `  4        \        V4      ^8w  g   \        V4      ^8w  d   \        R4      hW n        W0n        W@n        Wpn        W€n        \        P                  ! W^,          VR7      V n        \        P                  ! WVR7      V n        V P                  4        V P                  4        R# )r   z.window_size and shift_size must be of length 2rW   N)rZ   r[   ÚlenÚ
ValueErrorr>   rˆ   r‡   r‰   rŠ   r   r\   r³   ÚprojÚ#define_relative_position_bias_tableÚdefine_relative_position_index)
r`   rM   r>   rˆ   r‡   r‹   rŒ   r‰   rŠ   ra   s
   &&&&&&&&&€r$   r[   ÚShiftedWindowAttention.__init__ï   s�   ø€ ô 	‰ÑÔÜˆ{Ó˜qÔ ¤C¨
£O°qÔ$8ÜÐMÓNÐNØ&ÔØ$ŒØ"ŒØ!2ÔØŒä—9’9˜S¨¥'°Ô9ˆŒÜ—I’I˜c¨YÔ7ˆŒ	à×0Ñ0Ô2Ø×+Ñ+Ö-r&   c                óZ  € \         P                  ! \        P                  ! ^V P                  ^ ,          ,          ^,
          ^V P                  ^,          ,          ^,
          ,          V P
                  4      4      V n        \         P                  P                  V P                  RR7       R# )r   ç{®Gáz”?©ÚstdN)	r   Ú	Parameterr"   Úzerosr>   r‡   r<   ÚinitÚtrunc_normal_©r`   s   &r$   rÉ   Ú:ShiftedWindowAttention.define_relative_position_bias_table	  sw   € ä,.¯LªLÜ�KŠK˜˜T×-Ñ-¨aÕ0Õ0°1Õ4¸¸T×=MÑ=MÈaÕ=PÕ9PÐSTÕ9TÕUÐW[×WeÑWeÓfó-
ˆÔ)ô 	�‰×Ñ˜d×?Ñ?ÀTÐÖJr&   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      P                  4       pV P                  RV4       R# )
r   Úij©ÚindexingNr=   )r+   r+   N)r+   Nr+   )r+   r+   r   )r+   r+   r-   r.   )
r"   Úaranger>   ÚstackÚmeshgridÚflattenrC   rD   r™   Úregister_buffer)r`   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordsr=   s   &      r$   rÊ   Ú5ShiftedWindowAttention.define_relative_position_index  s  € ä—<’< × 0Ñ 0°Õ 3Ó4ˆÜ—<’< × 0Ñ 0°Õ 3Ó4ˆÜ—’œUŸ^š^¨HÈÔNÓOˆÜŸš 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×"AÑ"AÓ"CÐØ×ÑÐ6Ð8OÖPr&   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ©r   r    r!   )r#   rQ   s   "€r$   r%   rÄ     s   ø€ ÷ 
ñ 
©E¯L©Lñ 
r&   c                óX   € \        V P                  V P                  V P                  4      # ©N)rH   r<   r=   r>   rÔ   s   &r$   Úget_relative_position_biasÚ1ShiftedWindowAttention.get_relative_position_bias  s(   € Ü*Ø×-Ñ-¨t×/KÑ/KÈT×M]ÑM]ó
ð 	
r&   c                ó&   <€ V ^8„  d   QhRS[ RS[ /# r   rf   )r#   rQ   s   "€r$   r%   rÄ   #  s   ø€ ÷ 
ñ 
™ð 
¡Fñ 
r&   c                óh  € V P                  4       p\        VV P                  P                  V P                  P                  VV P
                  V P                  V P                  V P                  V P                  V P                  P                  V P                  P                  V P                  R7      # )ú{
Args:
    x (Tensor): Tensor with layout of [B, H, W, C]
Returns:
    Tensor with same layout as input, i.e. [B, H, W, C]
)rˆ   r‰   rŠ   r‹   rŒ   rŽ   )ré   r¾   r³   ÚweightrÈ   r>   r‡   rˆ   r‰   rŠ   rX   rŽ   ©r`   r   rG   s   && r$   rk   ÚShiftedWindowAttention.forward#  s‚   € ð "&×!@Ñ!@Ó!BÐÜ'ØØ�H‰H�O‰OØ�I‰I×ÑØ"Ø×ÑØ�N‰NØ—‘Ø"×4Ñ4Ø—L‘LØ—X‘X—]‘]Ø—i‘i—n‘nØ—]‘]ô
ð 	
r&   )r‰   rŠ   r‡   rÈ   r³   r<   rˆ   r>   ©TTr•   r•   )ro   rp   rq   rr   rs   r[   rÉ   rÊ   ré   rk   ru   rv   rw   rx   s   @@r$   rÀ   rÀ   ê   s9   ù‡ € ñ÷.õ .ò4KòQ÷
ð 
÷

÷ 
ð 
r&   rÀ   c                   óp   a a€ ] tR tRt oRtRV3R lV 3R llltR tV3R lR ltV3R lR	 ltR
t	Vt
V ;t# )ÚShiftedWindowAttentionV2i;  z*
See :func:`shifted_window_attention_v2`.
c                ój   <€ V ^8„  d   QhRS[ RS[S[ ,          RS[S[ ,          RS[ RS[RS[RS[RS[/# rÂ   rÃ   )r#   rQ   s   "€r$   r%   Ú%ShiftedWindowAttentionV2.__annotate__@  sc   ø€ ÷ <ñ <áð<ñ ™#•Yð<ñ ™•Ið	<ñ
 ð<ñ ð<ñ ð<ñ !ð<ñ ñ<r&   c	                ój  <€ \         S
V `  VVVVVVVVR 7       \        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'       df   V P                  P                  P                  4       ^,          p	V P                  P                  V	^V	,           P                  P!                  4        R# R# ))r‹   rŒ   r‰   rŠ   i   TrW   )ÚinplaceFN)rZ   r[   r   rÐ   r"   r¥   Úonesr�   Ú
Sequentialr\   ÚReLUÚcpb_mlpr³   rX   r�   Údatarž   )r`   rM   r>   rˆ   r‡   r‹   rŒ   r‰   rŠ   r²   ra   s   &&&&&&&&& €r$   r[   Ú!ShiftedWindowAttentionV2.__init__@  sç   ø€ ô 	‰ÑØØØØØØØ/Øð 	ô 		
ô Ÿ<š<¬¯	ª	°"´u·z²zÀ9ÈaÐQRÐBSÓ7TÕ2TÓ(UÓVˆÔä—}’}Ü�IŠI�a˜ 4Ô(¬"¯'ª'¸$Ô*?ÄÇÂÈ3ÐPYÐ`eÔAfó
ˆŒ÷ Ø—X‘X—]‘]×(Ñ(Ó*¨aÕ/ˆFØ�H‰H�M‰M˜& 1 v¥:Ð.×3Ñ3×9Ñ9Ö;ñ r&   c                ó”  € \         P                  ! V P                  ^ ,          ^,
          ) V P                  ^ ,          \         P                  R7      p\         P                  ! V P                  ^,          ^,
          ) V P                  ^,          \         P                  R7      p\         P                  ! \         P
                  ! W.RR7      4      pVP                  ^^^ 4      P                  4       P                  ^ 4      pVR;;,          V P                  ^ ,          ^,
          ,          uu&   VR	;;,          V P                  ^,          ^,
          ,          uu&   V^,          p\         P                  ! V4      \         P                  ! \         P                  ! V4      R,           4      ,          R,          pV P                  RV4       R# )
r   )Údtyper×   rØ   g      ð?g      @Úrelative_coords_tableN)r+   r+   r+   r   )r+   r+   r+   r-   )r"   rÚ   r>   Úfloat32rÛ   rÜ   rC   rD   rE   ÚsignÚlog2ÚabsrÞ   )r`   Úrelative_coords_hÚrelative_coords_wr   s   &   r$   rÉ   Ú<ShiftedWindowAttentionV2.define_relative_position_bias_table_  sR  € ä!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`mÑ`mÔnÐÜ!ŸLšL¨4×+;Ñ+;¸AÕ+>ÀÕ+BÐ)CÀT×EUÑEUÐVWÕEXÔ`e×`mÑ`mÔnÐÜ %§¢¬E¯NªNÐ<MÐ;aÐlpÔ,qÓ rÐØ 5× =Ñ =¸aÀÀAÓ F× QÑ QÓ S× ]Ñ ]Ð^_Ó `Ðà˜j×)¨T×-=Ñ-=¸aÕ-@À1Õ-DÕDÓ)Ø˜j×)¨T×-=Ñ-=¸aÕ-@À1Õ-DÕDÓ)à Õ"Ðä�JŠJÐ,Ó-´·
²
¼5¿9º9ÐEZÓ;[Ð^aÕ;aÓ0bÕbÐehÕhð 	ð 	×ÑÐ4Ð6KÖLr&   c                ó4   <€ V ^8„  d   QhRS[ P                  /# ræ   r!   )r#   rQ   s   "€r$   r%   rõ   o  s   ø€ ÷ &ñ &©E¯L©Lñ &r&   c                óè   € \        V P                  V P                  4      P                  RV P                  4      V P
                  V P                  4      p^\        P                  ! V4      ,          pV# )r-   r.   )	rH   rû   r   rB   r‡   r=   r>   r"   Úsigmoid)r`   rG   s   & r$   ré   Ú3ShiftedWindowAttentionV2.get_relative_position_biaso  s_   € Ü!<Ø�L‰L˜×3Ñ3Ó4×9Ñ9¸"¸d¿n¹nÓMØ×(Ñ(Ø×Ñó"
Ðð
 "$¤e§m¢mÐ4JÓ&KÕ!KÐØ%Ð%r&   c                ó    <€ V ^8„  d   QhRS[ /# re   rf   )r#   rQ   s   "€r$   r%   rõ   x  s   ø€ ÷ 
ñ 
™ñ 
r&   c                ó~  € V P                  4       p\        VV P                  P                  V P                  P                  VV P
                  V P                  V P                  V P                  V P                  V P                  P                  V P                  P                  V P                  V P                  R7      # )rí   )rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   )ré   r¾   r³   rî   rÈ   r>   r‡   rˆ   r‰   rŠ   rX   r�   rŽ   rï   s   && r$   rk   Ú ShiftedWindowAttentionV2.forwardx  s‹   € ð "&×!@Ñ!@Ó!BÐÜ'ØØ�H‰H�O‰OØ�I‰I×ÑØ"Ø×ÑØ�N‰NØ—‘Ø"×4Ñ4Ø—L‘LØ—X‘X—]‘]Ø—i‘i—n‘nØ×(Ñ(Ø—]‘]ô
ð 	
r&   )rû   r�   rñ   )ro   rp   rq   rr   rs   r[   rÉ   ré   rk   ru   rv   rw   rx   s   @@r$   ró   ró   ;  s3   ù‡ € ñ÷<õ <ò>M÷ &ð &÷
÷ 
ð 
r&   ró   c                   óx   a a€ ] tR tRt oRtRRRR]P                  ]3V3R lV 3R llltV3R lR lt	R	t
VtV ;t# )
ÚSwinTransformerBlocki‘  a‹  
Swin Transformer Block.
Args:
    dim (int): Number of input channels.
    num_heads (int): Number of attention heads.
    window_size (List[int]): Window size.
    shift_size (List[int]): Shift size for shifted window attention.
    mlp_ratio (float): Ratio of mlp hidden dim to embedding dim. Default: 4.0.
    dropout (float): Dropout rate. Default: 0.0.
    attention_dropout (float): Attention dropout rate. Default: 0.0.
    stochastic_depth_prob: (float): Stochastic depth rate. Default: 0.0.
    norm_layer (nn.Module): Normalization layer.  Default: nn.LayerNorm.
    attn_layer (nn.Module): Attention layer. Default: ShiftedWindowAttention
ç      @r•   c                óÆ   <€ V ^8„  d   QhRS[ RS[ RS[S[ ,          RS[S[ ,          RS[RS[RS[RS[R	S[R
S[P
                  3,          RS[R
S[P
                  3,          /
# ©r   rM   r‡   r>   rˆ   Ú	mlp_ratiorŠ   r‰   Ústochastic_depth_probrN   .Ú
attn_layer©r@   r?   r�   r   r   rP   )r#   rQ   s   "€r$   r%   Ú!SwinTransformerBlock.__annotate__¡  s‘   ø€ ÷ !6ñ !6áð!6ñ ð!6ñ ™#•Yð	!6ñ
 ™•Ið!6ñ ð!6ñ ð!6ñ !ð!6ñ  %ð!6ñ ˜S¡"§)¡)˜^Õ,ð!6ñ ˜S¡"§)¡)˜^Õ,ñ!6r&   c           	     ól  <€ \         SV `  4        \        V 4       V	! V4      V n        V
! VVVVVVR 7      V n        \        VR4      V n        V	! V4      V n        \        V\        W,          4      V.\        P                  RVR7      V n        V P                  P                  4        F‰  p\        V\        P                  4      '       g   K%  \        P                   P#                  VP$                  4       VP&                  f   K^  \        P                   P)                  VP&                  RR7       K‹  	  R# ))r‰   rŠ   ÚrowN)Úactivation_layerr÷   rŠ   g�íµ ÷Æ°>rÎ   )rZ   r[   r   Únorm1r·   r   Ústochastic_depthÚnorm2r	   r@   r   ÚGELUÚmlpÚmodulesÚ
isinstancer\   rÒ   Úxavier_uniform_rî   rX   Únormal_)r`   rM   r‡   r>   rˆ   r  rŠ   r‰   r  rN   r  Úmra   s   &&&&&&&&&&& €r$   r[   ÚSwinTransformerBlock.__init__¡  sä   ø€ ô 	‰ÑÔÜ˜DÔ!á “_ˆŒ
ÙØØØØØ/Øô
ˆŒ	ô !0Ð0EÀuÓ MˆÔÙ “_ˆŒ
Ü�sœS ¥Ó1°3Ð7Ì"Ï'É'Ð[_ÐipÔqˆŒà—‘×!Ñ!Ö#ˆAÜ˜!œRŸY™Y×'Ô'Ü—‘×'Ñ'¨¯©Ô1Ø—6‘6Ô%Ü—G‘G—O‘O A§F¡F°�OÖ5ó	 $r&   c                ó    <€ V ^8„  d   QhRS[ /# re   rf   )r#   rQ   s   "€r$   r%   r  Ä  s   ø€ ÷ ñ ™ñ r&   c                óÚ   € WP                  V P                  V P                  V4      4      4      ,           pWP                  V P                  V P	                  V4      4      4      ,           pV# rè   )r  r·   r  r   r  rj   s   &&r$   rk   ÚSwinTransformerBlock.forwardÄ  sO   € Ø×%Ñ% d§i¡i°·
±
¸1³Ó&>Ó?Õ?ˆØ×%Ñ% d§h¡h¨t¯z©z¸!«}Ó&=Ó>Õ>ˆØˆr&   )r·   r   r  r  r  )ro   rp   rq   rr   rs   r   rt   rÀ   r[   rk   ru   rv   rw   rx   s   @@r$   r  r  ‘  s<   ù‡ € ñð* ØØ#&Ø'*Ø/1¯|©|Ø/E÷!6õ !6÷F÷ ð r&   r  c                   óx   a a€ ] tR tRt oRtRRRR]P                  ]3V3R lV 3R llltV3R lR lt	R	t
VtV ;t# )
ÚSwinTransformerBlockV2iÊ  a‘  
Swin Transformer V2 Block.
Args:
    dim (int): Number of input channels.
    num_heads (int): Number of attention heads.
    window_size (List[int]): Window size.
    shift_size (List[int]): Shift size for shifted window attention.
    mlp_ratio (float): Ratio of mlp hidden dim to embedding dim. Default: 4.0.
    dropout (float): Dropout rate. Default: 0.0.
    attention_dropout (float): Attention dropout rate. Default: 0.0.
    stochastic_depth_prob: (float): Stochastic depth rate. Default: 0.0.
    norm_layer (nn.Module): Normalization layer.  Default: nn.LayerNorm.
    attn_layer (nn.Module): Attention layer. Default: ShiftedWindowAttentionV2.
r  r•   c                óÆ   <€ V ^8„  d   QhRS[ RS[ RS[S[ ,          RS[S[ ,          RS[RS[RS[RS[R	S[R
S[P
                  3,          RS[R
S[P
                  3,          /
# r  r  )r#   rQ   s   "€r$   r%   Ú#SwinTransformerBlockV2.__annotate__Ú  s‘   ø€ ÷ 
ñ 
áð
ñ ð
ñ ™#•Yð	
ñ
 ™•Ið
ñ ð
ñ ð
ñ !ð
ñ  %ð
ñ ˜S¡"§)¡)˜^Õ,ð
ñ ˜S¡"§)¡)˜^Õ,ñ
r&   c                ó:   <€ \         SV `  VVVVVVVVV	V
R 7
       R# ))r  rŠ   r‰   r  rN   r  N)rZ   r[   )r`   rM   r‡   r>   rˆ   r  rŠ   r‰   r  rN   r  ra   s   &&&&&&&&&&&€r$   r[   ÚSwinTransformerBlockV2.__init__Ú  s5   ø€ ô 	‰ÑØØØØØØØ/Ø"7Ø!Ø!ð 	ö 	
r&   c                ó    <€ V ^8„  d   QhRS[ /# re   rf   )r#   rQ   s   "€r$   r%   r-  ô  s   ø€ ÷ ñ ™ñ r&   c                óÚ   € WP                  V P                  V P                  V4      4      4      ,           pWP                  V P                  V P	                  V4      4      4      ,           pV# rè   )r  r  r·   r  r   rj   s   &&r$   rk   ÚSwinTransformerBlockV2.forwardô  sQ   € ð ×%Ñ% d§j¡j°·±¸1³Ó&>Ó?Õ?ˆØ×%Ñ% d§j¡j°·±¸!³Ó&=Ó>Õ>ˆØˆr&   © )ro   rp   rq   rr   rs   r   rt   ró   r[   rk   ru   rv   rw   rx   s   @@r$   r+  r+  Ê  s;   ù‡ € ñð* ØØ#&Ø'*Ø/1¯|©|Ø/G÷
õ 
÷4÷ ð r&   r+  c                   ó\   a a€ ] tR tRt oRtRRRRRRR]3V3R lV 3R	 llltR
 tRtVt	V ;t
# )r   iü  a÷  
Implements Swin Transformer from the `"Swin Transformer: Hierarchical Vision Transformer using
Shifted Windows" <https://arxiv.org/abs/2103.14030>`_ paper.
Args:
    patch_size (List[int]): Patch size.
    embed_dim (int): Patch embedding dimension.
    depths (List(int)): Depth of each Swin Transformer layer.
    num_heads (List(int)): Number of attention heads in different layers.
    window_size (List[int]): Window size.
    mlp_ratio (float): Ratio of mlp hidden dim to embedding dim. Default: 4.0.
    dropout (float): Dropout rate. Default: 0.0.
    attention_dropout (float): Attention dropout rate. Default: 0.0.
    stochastic_depth_prob (float): Stochastic depth rate. Default: 0.1.
    num_classes (int): Number of classes for classification head. Default: 1000.
    block (nn.Module, optional): SwinTransformer Block. Default: None.
    norm_layer (nn.Module, optional): Normalization layer. Default: None.
    downsample_layer (nn.Module): Downsample layer (patch merging). Default: PatchMerging.
r  r•   gš™™™™™¹?iè  Nc                ó@  <€ V ^8„  d   QhRS[ S[,          RS[RS[ S[,          RS[ S[,          RS[ S[,          RS[RS[RS[R	S[R
S[RS[S[RS[P                  3,          ,          RS[S[RS[P                  3,          ,          RS[RS[P                  3,          /# )r   Ú
patch_sizeÚ	embed_dimÚdepthsr‡   r>   r  rŠ   r‰   r  Únum_classesrN   .ÚblockÚdownsample_layer)r?   r@   r�   r   r   r   rP   )r#   rQ   s   "€r$   r%   ÚSwinTransformer.__annotate__  sÝ   ø€ ÷ M+ñ M+á™•IðM+ñ ðM+ñ ‘S•	ð	M+ñ
 ™•9ðM+ñ ™#•YðM+ñ ðM+ñ ðM+ñ !ðM+ñ  %ðM+ñ ðM+ñ ™X c©2¯9©9 nÕ5Õ6ðM+ñ ™ ¡b§i¡i Õ0Õ1ðM+ñ # 3©¯	©	 >Õ2ñM+r&   c                óN  <€ \         SV `  4        \        V 4       W n        Vf   \        pVf   \        \        P                  RR7      p. pVP                  \        P                  ! \        P                  ! ^W!^ ,          V^,          3V^ ,          V^,          3R7      \        . RO4      V! V4      4      4       \        V4      p^ p\        \        V4      4       Fù  p. pV^V,          ,          p\        VV,          4       Fz  pV	\        V4      ,          V^,
          ,          pTP                  T! TVV,          TV Uu. uF  pV^,          ^ 8X  d   ^ MV^,          NK  	  upVVVVVR7	      4       V^,          pK|  	  VP                  \        P                  ! V!  4       V\        V4      ^,
          8  g   Ká  VP                  V! VV4      4       Kû  	  \        P                  ! V!  V n        V^\        V4      ^,
          ,          ,          pV! V4      V n        \        . RO4      V n        \        P&                  ! ^4      V n        \        P*                  ! ^4      V n        \        P.                  ! VV
4      V n        V P3                  4        F‰  p\5        V\        P.                  4      '       g   K%  \        P6                  P9                  VP:                  RR7       VP<                  f   K`  \        P6                  P?                  VP<                  4       K‹  	  R # u upi )	Ngñhãˆµøä>)Úeps)Úkernel_sizeÚstride)r>   rˆ   r  rŠ   r‰   r  rN   rÍ   rÎ   )r   r   r(   r-   )r   r(   r-   r   ) rZ   r[   r   r9  r  r   r   rt   Úappendrù   ÚConv2dr
   r™   ÚrangerÆ   r�   Úfeaturesr^   rC   ÚAdaptiveAvgPool2dÚavgpoolÚFlattenrÝ   r\   Úheadr!  r"  rÒ   rÓ   rî   rX   Úzeros_)r`   r6  r7  r8  r‡   r>   r  rŠ   r‰   r  r9  rN   r:  r;  ÚlayersÚtotal_stage_blocksÚstage_block_idÚi_stageÚstagerM   Úi_layerÚsd_probr½   Únum_featuresr%  ra   s   &&&&&&&&&&&&&&           €r$   r[   ÚSwinTransformer.__init__  sw  ø€ ô  	‰ÑÔÜ˜DÔ!Ø&ÔàŠ=Ü(ˆEØÒÜ ¤§¡°4Ô8ˆJà"$ˆà�‰Ü�MŠMÜ—	’	Ø�y¸!­}¸jÈ½mÐ.LÐV`ÐabÕVcÐeoÐpqÕerÐUsôô šÓ%Ù˜9Ó%óô	
ô ! ›[ÐØˆäœS ›[Ö)ˆGØ%'ˆEØ˜a �jÕ(ˆCÜ  ¨¥Ö1�à/´%¸Ó2GÕGÐK]Ð`aÕKaÕb�Ø—‘ÙØØ! 'Õ*Ø$/ÙOZÓ#[É{È!¨°1­¸Ô)9¡A¸qÀA½vÒ$EÉ{Ñ#[Ø"+Ø 'Ø*;Ø.5Ø#-ô
ôð  !Õ#’ñ! 2ð" �M‰Mœ"Ÿ-š-¨Ñ/Ô0àœ#˜f›+¨�/Ö*Ø—‘Ñ.¨s°JÓ?Ö@ñ/ *ô0 Ÿš vÑ.ˆŒà  1¬¨V«°q­Õ#9Õ9ˆÙ˜|Ó,ˆŒ	Üš|Ó,ˆŒÜ×+Ò+¨AÓ.ˆŒÜ—z’z !“}ˆŒÜ—I’I˜l¨KÓ8ˆŒ	à—‘–ˆAÜ˜!œRŸY™Y×'Ô'Ü—‘×%Ñ% a§h¡h°DÐ%Ô9Ø—6‘6Ô%Ü—G‘G—N‘N 1§6¡6Ö*ó	  ùò- $\s   Å"L"c                óÒ   € V P                  V4      pV P                  V4      pV P                  V4      pV P                  V4      pV P	                  V4      pV P                  V4      pV# rè   )rD  r^   rC   rF  rÝ   rH  rj   s   &&r$   rk   ÚSwinTransformer.forward_  sV   € Ø�M‰M˜!ÓˆØ�I‰I�a‹LˆØ�L‰L˜‹OˆØ�L‰L˜‹OˆØ�L‰L˜‹OˆØ�I‰I�a‹LˆØˆr&   )rF  rD  rÝ   rH  r^   r9  rC   )ro   rp   rq   rr   rs   rJ   r[   rk   ru   rv   rw   rx   s   @@r$   r   r   ü  s;   ù‡ € ñð4 ØØ#&Ø'*ØØ9=Ø48Ø5A÷M+õ M+÷^ò r&   c                óþ   € V ^8„  d   QhR\         \        ,          R\        R\         \        ,          R\         \        ,          R\         \        ,          R\        R\        \        ,          R\
        R	\        R
\        /
# )r   r6  r7  r8  r‡   r>   r  ÚweightsÚprogressÚkwargsr    )r?   r@   r�   r   r   r�   r   r   )r#   s   "r$   r%   r%   i  s�   € ÷ ñ Ü”S•	ðäðô ”�Iðô ”C�yð	ô
 ”c•ðô !ðô ”kÕ"ðô ðô ðô ñr&   c                 óÖ   € Ve(   \        VR\        VP                  R,          4      4       \        RRV RVRVRVRVRV/VB p	Ve#   V	P	                  VP                  VR	R
7      4       V	# )Nr9  Ú
categoriesr6  r7  r8  r‡   r>   r  T)rW  Ú
check_hashr3  )r   rÆ   Úmetar   Úload_state_dictÚget_state_dict)
r6  r7  r8  r‡   r>   r  rV  rW  rX  Úmodels
   &&&&&&&&, r$   Ú_swin_transformerr`  i  sœ   € ð ÒÜ˜f m´S¸¿¹ÀlÕ9SÓ5TÔUäñ Øðàðð ðð ð	ð
  ðð 4ðð ñ€Eð ÒØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔYà€Lr&   rZ  c                   óˆ   € ] tR tRt]! R]! ]^à^è]P                  R7      / ]	CRRRRRRR	R
RRRR//RRRRRR/CR7      t
]
tRtR# )r   iŒ  z7https://download.pytorch.org/models/swin_t-704ceda3.pth©Ú	crop_sizeÚresize_sizeÚinterpolationÚ
num_paramsib¥¯Úmin_sizeÚrecipeúUhttps://github.com/pytorch/vision/tree/main/references/classification#swintransformerÚ_metricsúImageNet-1Kúacc@1gu“V^T@úacc@5g‹lçû©ñW@Ú_opsgX9´Èö@Ú
_file_sizeg\�Âõ([@Ú_docsúYThese weights reproduce closely the results of the paper using a similar training recipe.©ÚurlÚ
transformsr\  r3  N©éà   rv  ©ro   rp   rq   rr   r   r   r   r   ÚBICUBICÚ_COMMON_METAÚIMAGENET1K_V1ÚDEFAULTru   r3  r&   r$   r   r   Œ  s|   † ÙØEÙØ¨3¸CÐO`×OhÑOhô
ð
Øð
à˜(Ø˜
ØÐmØØØ˜VØ˜Vð ðð �EØ˜&ØÐtñ
ô€Mð* „Gr&   c                   óˆ   € ] tR tRt]! R]! ]^à^ö]P                  R7      / ]	CRRRRRRR	R
RRRR//RRRRRR/CR7      t
]
tRtR# )r   i¥  z7https://download.pytorch.org/models/swin_s-5e29d889.pthrb  rf  irîôrg  rh  ri  rj  rk  rl  g�•C‹ÌT@rm  g×£p=
X@rn  g¬Zd{!@ro  gþÔxé&¹g@rp  rq  rr  r3  Nru  rw  r3  r&   r$   r   r   ¥  s|   † ÙØEÙØ¨3¸CÐO`×OhÑOhô
ð
Øð
à˜(Ø˜
ØÐmØØØ˜VØ˜Vð ðð �EØ˜'ØÐtñ
ô€Mð* „Gr&   c                   óˆ   € ] tR tRt]! R]! ]^à^î]P                  R7      / ]	CRRRRRRR	R
RRRR//RRRRRR/CR7      t
]
tRtR# )r   i¾  z7https://download.pytorch.org/models/swin_b-68c6b09e.pthrb  rf  i <;rg  rh  ri  rj  rk  rl  gh‘í|?åT@rm  g)\�Âõ(X@rn  gé&1¬Ü.@ro  gçû©ñÒõt@rp  rq  rr  r3  Nru  rw  r3  r&   r$   r   r   ¾  s|   † ÙØEÙØ¨3¸CÐO`×OhÑOhô
ð
Øð
à˜(Ø˜
ØÐmØØØ˜VØ˜Vð ðð �FØ˜'ØÐtñ
ô€Mð* „Gr&   c                   óˆ   € ] tR tRt]! R]! ]RR]P                  R7      / ]	CRRRRR	R
RRRRRR//RRRRRR/CR7      t
]
tRtR# )r   i×  z:https://download.pytorch.org/models/swin_v2_t-b137f0e2.pthé   é  rb  rf  iRœ°rg  rh  úXhttps://github.com/pytorch/vision/tree/main/references/classification#swintransformer-v2rj  rk  rl  gøSã¥›„T@rm  gœÄ °rX@rn  gÃõ(\�Â@ro  gòÒMb([@rp  rq  rr  r3  N©r  r  rw  r3  r&   r$   r   r   ×  s|   † ÙØHÙØ¨3¸CÐO`×OhÑOhô
ð
Øð
à˜(Ø˜
ØÐpØØØ˜VØ˜Vð ðð �DØ˜'ØÐtñ
ô€Mð* „Gr&   c                   óˆ   € ] tR tRt]! R]! ]RR]P                  R7      / ]	CRRRRR	R
RRRRRR//RRRRRR/CR7      t
]
tRtR# )r   ið  z:https://download.pytorch.org/models/swin_v2_s-637d8ceb.pthr  r€  rb  rf  iâîörg  rh  r�  rj  rk  rl  g!°rh‘íT@rm  gNbX94X@rn  gd;ßO�'@ro  gš™™™™Õg@rp  rq  rr  r3  Nr‚  rw  r3  r&   r$   r   r   ð  ó|   † ÙØHÙØ¨3¸CÐO`×OhÑOhô
ð
Øð
à˜(Ø˜
ØÐpØØØ˜VØ˜Vð ðð �FØ˜'ØÐtñ
ô€Mð* „Gr&   c                   óˆ   € ] tR tRt]! R]! ]RR]P                  R7      / ]	CRRRRR	R
RRRRRR//RRRRRR/CR7      t
]
tRtR# )r   i	  z:https://download.pytorch.org/models/swin_v2_b-781e5279.pthr  i  rb  rf  ià·=rg  rh  r�  rj  rk  rl  gºI+U@rm  gžï§ÆK7X@rn  g33333S4@ro  gË¡E¶óu@rp  rq  rr  r3  Nr‚  rw  r3  r&   r$   r   r   	  r„  r&   Ú
pretrained)rV  rV  rW  c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# ©r   rV  rW  rX  r    )r   r   r�   r   r   )r#   s   "r$   r%   r%   $  ó/   € ÷ !ñ !”x¤Õ/ð !Ä$ð !ÔY\ð !Ôapñ !r&   c                ór   € \         P                  V 4      p \        R
R^^.R^`R. ROR. ROR^^.RRRV R	V/VB # )a€  
Constructs a swin_tiny architecture from
`Swin Transformer: Hierarchical Vision Transformer using Shifted Windows <https://arxiv.org/abs/2103.14030>`_.

Args:
    weights (:class:`~torchvision.models.Swin_T_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_T_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_T_Weights
    :members:
r6  r7  r8  r‡   r>   r  çš™™™™™É?rV  rW  r3  ©r   r   é   r   ©r(   r�  é   é   )r   Úverifyr`  ©rV  rW  rX  s   $$,r$   Úswin_tr“  "  s   € ô. ×#Ñ# GÓ,€Gäñ 
Ø�q�6ð
àð
ò ð
ò !ð	
ð
 ˜�Fð
ð "ð
ð ð
ð ð
ð ñ
ð 
r&   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# rˆ  )r   r   r�   r   r   )r#   s   "r$   r%   r%   J  r‰  r&   c                ór   € \         P                  V 4      p \        R
R^^.R^`R. ROR. ROR^^.RRRV R	V/VB # )a�  
Constructs a swin_small architecture from
`Swin Transformer: Hierarchical Vision Transformer using Shifted Windows <https://arxiv.org/abs/2103.14030>`_.

Args:
    weights (:class:`~torchvision.models.Swin_S_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_S_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_S_Weights
    :members:
r6  r7  r8  r‡   r>   r  ç333333Ó?rV  rW  r3  ©r   r   é   r   rŽ  )r   r‘  r`  r’  s   $$,r$   Úswin_sr™  H  s   € ô. ×#Ñ# GÓ,€Gäñ 
Ø�q�6ð
àð
ò ð
ò !ð	
ð
 ˜�Fð
ð "ð
ð ð
ð ð
ð ñ
ð 
r&   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# rˆ  )r   r   r�   r   r   )r#   s   "r$   r%   r%   p  r‰  r&   c                ór   € \         P                  V 4      p \        R
R^^.R^€R. ROR. ROR^^.RRRV R	V/VB # )a€  
Constructs a swin_base architecture from
`Swin Transformer: Hierarchical Vision Transformer using Shifted Windows <https://arxiv.org/abs/2103.14030>`_.

Args:
    weights (:class:`~torchvision.models.Swin_B_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_B_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_B_Weights
    :members:
r6  r7  r8  r‡   r>   r  ç      à?rV  rW  r3  r—  ©rV   é   é   é    )r   r‘  r`  r’  s   $$,r$   Úswin_br¡  n  s   € ô. ×#Ñ# GÓ,€Gäñ 
Ø�q�6ð
àð
ò ð
ò !ð	
ð
 ˜�Fð
ð "ð
ð ð
ð ð
ð ñ
ð 
r&   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# rˆ  )r   r   r�   r   r   )r#   s   "r$   r%   r%   –  ó0   € ÷ #ñ #œ(Ô#4Õ5ð #Ìð #Ô_bð #Ôgvñ #r&   c                óŠ   € \         P                  V 4      p \        RR^^.R^`R. ROR. ROR^^.RRRV R	VR
\        R\        /
VB # )a|  
Constructs a swin_v2_tiny architecture from
`Swin Transformer V2: Scaling Up Capacity and Resolution <https://arxiv.org/abs/2111.09883>`_.

Args:
    weights (:class:`~torchvision.models.Swin_V2_T_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_V2_T_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_V2_T_Weights
    :members:
r6  r7  r8  r‡   r>   r  r‹  rV  rW  r:  r;  r3  rŒ  rŽ  )r   r‘  r`  r+  r{   r’  s   $$,r$   Ú	swin_v2_tr¥  ”  s“   € ô.  ×&Ñ& wÓ/€Gäñ Ø�q�6ðàðò ðò !ð	ð
 ˜�Fðð "ðð ðð ðô %ðô (ðð ñð r&   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# rˆ  )r   r   r�   r   r   )r#   s   "r$   r%   r%   ¾  r£  r&   c                óŠ   € \         P                  V 4      p \        RR^^.R^`R. ROR. ROR^^.RRRV R	VR
\        R\        /
VB # )a}  
Constructs a swin_v2_small architecture from
`Swin Transformer V2: Scaling Up Capacity and Resolution <https://arxiv.org/abs/2111.09883>`_.

Args:
    weights (:class:`~torchvision.models.Swin_V2_S_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_V2_S_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_V2_S_Weights
    :members:
r6  r7  r8  r‡   r>   r  r–  rV  rW  r:  r;  r3  r—  rŽ  )r   r‘  r`  r+  r{   r’  s   $$,r$   Ú	swin_v2_sr¨  ¼  s“   € ô.  ×&Ñ& wÓ/€Gäñ Ø�q�6ðàðò ðò !ð	ð
 ˜�Fðð "ðð ðð ðô %ðô (ðð ñð r&   c                ó^   € V ^8„  d   QhR\         \        ,          R\        R\        R\        /# rˆ  )r   r   r�   r   r   )r#   s   "r$   r%   r%   æ  r£  r&   c                óŠ   € \         P                  V 4      p \        RR^^.R^€R. ROR. ROR^^.RRRV R	VR
\        R\        /
VB # )a|  
Constructs a swin_v2_base architecture from
`Swin Transformer V2: Scaling Up Capacity and Resolution <https://arxiv.org/abs/2111.09883>`_.

Args:
    weights (:class:`~torchvision.models.Swin_V2_B_Weights`, optional): The
        pretrained weights to use. See
        :class:`~torchvision.models.Swin_V2_B_Weights` below for
        more details, and possible values. By default, no pre-trained
        weights are used.
    progress (bool, optional): If True, displays a progress bar of the
        download to stderr. Default is True.
    **kwargs: parameters passed to the ``torchvision.models.swin_transformer.SwinTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/swin_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.Swin_V2_B_Weights
    :members:
r6  r7  r8  r‡   r>   r  rœ  rV  rW  r:  r;  r3  r—  r�  )r   r‘  r`  r+  r{   r’  s   $$,r$   Ú	swin_v2_br«  ä  s“   € ô.  ×&Ñ& wÓ/€Gäñ Ø�q�6ðàðò ðò !ð	ð
 ˜�Fðð "ðð ðð ðô %ðô (ðð ñð r&   )r   r   r   r   r   r   r   r“  r™  r¡  r¥  r¨  r«  )r•   r•   NNNT)=r¤   Ú	functoolsr   Útypingr   r   r   r"   Útorch.nn.functionalr   Ú
functionalr0   r   Úops.miscr	   r
   Úops.stochastic_depthr   Útransforms._presetsr   r   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r:   ÚfxÚwraprH   rP   rJ   r{   r¾   rÀ   ró   r  r+  r   r`  ry  r   r   r   r   r   r   rz  r“  r™  r¡  r¥  r¨  r«  r3  r&   r$   Ú<module>rº     sÓ  ðÛ Ý ß *Ñ *ã ß Ð ß ç #Ý 2ß HÝ 'ß 6Ñ 6Ý 'ß Bò€õ"ð ‡�‡�Ð"Ô #õ"ð ‡�‡�Ð+Ô ,ô�2—9‘9ô ô6�R—Y‘Yô ÷6pðf ‡�‡�Ð(Ô )ôN
˜RŸY™Yô N
ôbS
Ð5ô S
ôl6˜2Ÿ9™9ô 6ôr/Ð1ô /ôdj�b—i‘iô jõZð> Ð&ð€ô
�[ô ô2�[ô ô2�[ô ô2˜ô ô2˜ô ô2˜ô ñ2 ÓÙ ,°×0LÑ0LÐ!MÔNð!°$ð !Èö !ó Oó ð!ñH ÓÙ ,°×0LÑ0LÐ!MÔNð!°$ð !Èö !ó Oó ð!ñH ÓÙ ,°×0LÑ0LÐ!MÔNð!°$ð !Èö !ó Oó ð!ñH ÓÙ ,Ð0A×0OÑ0OÐ!PÔQð#¸ð #Ètö #ó Ró ð#ñL ÓÙ ,Ð0A×0OÑ0OÐ!PÔQð#¸ð #Ètö #ó Ró ð#ñL ÓÙ ,Ð0A×0OÑ0OÐ!PÔQð#¸ð #Ètö #ó Ró ò#r&   