ó
    Eñi£™  ã                   óÌ  • S SK r S SKJr  S SKJrJrJr  S SKrS SKJ	s  J
r  S SKJ	r	Jr  SSKJrJr  SSKJr  SSKJrJr  SS	KJr  S
SKJrJrJr  S
SKJr  S
SKJrJr  / SQr S\R                  S\R                  4S jr!\RD                  RG                  S5        S\R                  S\R                  S\$\%   S\R                  4S jr&\RD                  RG                  S5         " S S\	RN                  5      r( " S S\	RN                  5      r)      SSS\S\S\S \S\$\%   S!\%S"\$\%   S#\*S$\*S%\\   S&\\   S'\\R                     S(\+S\4S) jjr,\RD                  RG                  S*5         " S+ S,\	RN                  5      r- " S- S.\-5      r. " S/ S0\	RN                  5      r/ " S1 S2\/5      r0 " S3 S4\	RN                  5      r1S5\$\%   S6\%S7\$\%   S!\$\%   S\$\%   S8\*S9\\   S:\+S;\S\14S< jr2S=\0r3 " S> S?\5      r4 " S@ SA\5      r5 " SB SC\5      r6 " SD SE\5      r7 " SF SG\5      r8 " SH SI\5      r9\" 5       \" SJ\4Rt                  4SK9SSSL.S9\\4   S:\+S;\S\14SM jj5       5       r;\" 5       \" SJ\5Rt                  4SK9SSSL.S9\\5   S:\+S;\S\14SN jj5       5       r<\" 5       \" SJ\6Rt                  4SK9SSSL.S9\\6   S:\+S;\S\14SO jj5       5       r=\" 5       \" SJ\7Rt                  4SK9SSSL.S9\\7   S:\+S;\S\14SP jj5       5       r>\" 5       \" SJ\8Rt                  4SK9SSSL.S9\\8   S:\+S;\S\14SQ jj5       5       r?\" 5       \" SJ\9Rt                  4SK9SSSL.S9\\9   S:\+S;\S\14SR jj5       5       r@g)Té    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_WeightsÚswin_tÚswin_sÚswin_bÚ	swin_v2_tÚ	swin_v2_sÚ	swin_v2_bÚxÚreturnc           
      ó*  • U R                   SS  u  pn[        R                  " U SSSUS-  SUS-  45      n U SSS S2SS S2S S 24   nU SSS S2SS S2S S 24   nU SSS S2SS S2S S 24   nU SSS S2SS S2S S 24   n[        R                  " XEXg/S5      n U $ )Néýÿÿÿr   r	   .r   éÿÿÿÿ)ÚshapeÚFÚpadÚtorchÚcat)r$   ÚHÚWÚ_Úx0Úx1Úx2Úx3s           Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/models/swin_transformer.pyÚ_patch_merging_padr6   #   sÐ   € Ø�g‰g�b�cˆl�G€Aˆ!Ü	�Šˆa�!�Q˜˜1˜q™5 ! Q¨¡UÐ+Ó,€AØ	
ˆ3���1��a�d˜�dšAÐÑ	€BØ	
ˆ3���1��a�d˜�dšAÐÑ	€BØ	
ˆ3���1��a�d˜�dšAÐÑ	€BØ	
ˆ3���1��a�d˜�dšAÐÑ	€BÜ�	Š	�2˜2Ð" BÓ'€AØ€Hó    r6   Úrelative_position_bias_tableÚrelative_position_indexÚwindow_sizec                 ó¨   • US   US   -  nX   nUR                  X3S5      nUR                  SSS5      R                  5       R                  S5      nU$ )Nr   r   r(   r	   )ÚviewÚpermuteÚ
contiguousÚ	unsqueeze)r8   r9   r:   ÚNÚrelative_position_biass        r5   Ú_get_relative_position_biasrB   1   sb   € ð 	�A‰˜ Q™Ñ'€AØ9ÑRÐØ3×8Ñ8¸¸rÓBÐØ3×;Ñ;¸A¸qÀ!ÓD×OÑOÓQ×[Ñ[Ð\]Ó^ÐØ!Ð!r7   rB   c                   ó~   ^ • \ rS rSrSr\R                  4S\S\S\R                  4   4U 4S jjjr
S\4S jrS	rU =r$ )
ÚPatchMergingé>   zŒPatch Merging Layer.
Args:
    dim (int): Number of input channels.
    norm_layer (nn.Module): Normalization layer. Default: nn.LayerNorm.
ÚdimÚ
norm_layer.c                 ó¦   >• [         TU ]  5         [        U 5        Xl        [        R
                  " SU-  SU-  SS9U l        U" SU-  5      U l        g ©Né   r	   F©Úbias©ÚsuperÚ__init__r   rF   r   ÚLinearÚ	reductionÚnorm©ÚselfrF   rG   Ú	__class__s      €r5   rO   ÚPatchMerging.__init__E   óG   ø€ Ü‰ÑÔÜ˜DÔ!ØŒÜŸš 1 s¡7¨A°©G¸%Ñ@ˆŒÙ˜q 3™wÓ'ˆ�	r7   r$   c                 ó`   • [        U5      nU R                  U5      nU R                  U5      nU$ ©zƒ
Args:
    x (Tensor): input tensor with expected layout of [..., H, W, C]
Returns:
    Tensor with layout of [..., H/2, W/2, 2*C]
)r6   rR   rQ   ©rT   r$   s     r5   ÚforwardÚPatchMerging.forwardL   s.   € ô ˜qÓ!ˆØ�I‰I�a‹LˆØ�N‰N˜1ÓˆØˆr7   ©rF   rR   rQ   ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú	LayerNormÚintr   ÚModulerO   r   r[   Ú__static_attributes__Ú__classcell__©rU   s   @r5   rD   rD   >   óI   ø† ñð IKÏÉñ (˜Cð (¨X°c¸2¿9¹9°nÑ-E÷ (ð (ð
˜÷ 
ò 
r7   rD   c                   ó~   ^ • \ rS rSrSr\R                  4S\S\S\R                  4   4U 4S jjjr
S\4S jrS	rU =r$ )
ÚPatchMergingV2éY   z¤Patch Merging Layer for Swin Transformer V2.
Args:
    dim (int): Number of input channels.
    norm_layer (nn.Module): Normalization layer. Default: nn.LayerNorm.
rF   rG   .c                 ó¦   >• [         TU ]  5         [        U 5        Xl        [        R
                  " SU-  SU-  SS9U l        U" SU-  5      U l        g rI   rM   rS   s      €r5   rO   ÚPatchMergingV2.__init__`   rW   r7   r$   c                 ó`   • [        U5      nU R                  U5      nU R                  U5      nU$ rY   )r6   rQ   rR   rZ   s     r5   r[   ÚPatchMergingV2.forwardg   s.   € ô ˜qÓ!ˆØ�N‰N˜1ÓˆØ�I‰I�a‹LˆØˆr7   r]   r^   ri   s   @r5   rl   rl   Y   rj   r7   rl   TÚinputÚ
qkv_weightÚproj_weightrA   Ú	num_headsÚ
shift_sizeÚattention_dropoutÚdropoutÚqkv_biasÚ	proj_biasÚlogit_scaleÚtrainingc           	      ó:  • U R                   u  pÞnnUS   XôS   -  -
  US   -  nUS   XäS   -  -
  US   -  n[        R                  " U SSSUSU45      nUR                   u  nnnnUR                  5       nUS   U:¼  a  SUS'   US   U:¼  a  SUS'   [	        U5      S:”  a   [
        R                  " UUS   * US   * 4SS9nUUS   -  UUS   -  -  nUR                  UUUS   -  US   UUS   -  US   U5      nUR                  SSSSSS5      R                  UU-  US   US   -  U5      nUb<  U	b9  U	R                  5       n	U	R                  5       S-  nU	USU-   R                  5         [        R                  " UX5      nUR                  UR                  S5      UR                  S5      SUUU-  5      R                  SSSSS5      nUS   US   US   nnnUbx  [        R                  " US
S9[        R                  " US
S9R!                  SS
5      -  n[
        R"                  " U[$        R&                  " S5      S9R)                  5       nUU-  nO,UUU-  S-  -  nUR+                  UR!                  SS
5      5      nUU-   n[	        U5      S:”  GaÃ  UR-                  UU45      nSUS   * 4US   * US   * 4US   * S	44nSUS   * 4US   * US   * 4US   * S	44n Sn!U H(  n"U  H  n#U!UU"S   U"S   2U#S   U#S   24'   U!S-  n!M!     M*     UR                  UUS   -  US   UUS   -  US   5      nUR                  SSSS5      R                  UUS   US   -  5      nUR/                  S5      UR/                  S5      -
  nUR1                  US:g  [3        S5      5      R1                  US:H  [3        S5      5      nUR                  UR                  S5      U-  UUUR                  S5      UR                  S5      5      nUUR/                  S5      R/                  S5      -   nUR                  S
UUR                  S5      UR                  S5      5      n[        R4                  " US
S9n[        R6                  " UX|S9nUR+                  U5      R!                  SS5      R                  UR                  S5      UR                  S5      U5      n[        R                  " UX*5      n[        R6                  " UXŒS9nUR                  UUUS   -  UUS   -  US   US   U5      nUR                  SSSSSS5      R                  UUUU5      n[	        U5      S:”  a  [
        R                  " UUS   US   4SS9nUS	S	2S	U2S	U2S	S	24   R9                  5       nU$ )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.
r   r   )r   r	   )ÚshiftsÚdimsé   r	   rJ   é   Nr(   )rF   éþÿÿÿg      Y@)Úmaxg      à¿g      YÀç        )Úpr|   )r)   r*   r+   ÚcopyÚsumr,   Úrollr<   r=   ÚreshapeÚcloneÚnumelÚzero_ÚlinearÚsizeÚ	normalizeÚ	transposeÚclampÚmathÚlogÚexpÚmatmulÚ	new_zerosr?   Úmasked_fillÚfloatÚsoftmaxrx   r>   )$rr   rs   rt   rA   r:   ru   rv   rw   rx   ry   rz   r{   r|   ÚBr.   r/   ÚCÚpad_rÚpad_br$   r0   Úpad_HÚpad_WÚnum_windowsÚlengthÚqkvÚqÚkÚvÚattnÚ	attn_maskÚh_slicesÚw_slicesÚcountÚhÚws$                                       r5   Ú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Ø€Hr7   r­   c                   ó¨   ^ • \ rS rSrSr    SS\S\\   S\\   S\S\S\S	\S
\4U 4S jjjr	S r
S rS\R                  4S jrS\S\4S jrSrU =r$ )ÚShiftedWindowAttentionéê   z'
See :func:`shifted_window_attention`.
rF   r:   rv   ru   ry   rz   rw   rx   c	                 ó^  >• [         T	U ]  5         [        U5      S:w  d  [        U5      S:w  a  [        S5      eX l        X0l        X@l        Xpl        X€l        [        R                  " XS-  US9U l        [        R                  " XUS9U l        U R                  5         U R                  5         g )Nr	   z.window_size and shift_size must be of length 2r€   rK   )rN   rO   ÚlenÚ
ValueErrorr:   rv   ru   rw   rx   r   rP   r¢   ÚprojÚ#define_relative_position_bias_tableÚdefine_relative_position_index)
rT   rF   r:   rv   ru   ry   rz   rw   rx   rU   s
            €r5   rO   ÚShiftedWindowAttention.__init__ï   s�   ø€ ô 	‰ÑÔÜˆ{Ó˜qÓ ¤C¨
£O°qÓ$8ÜÐMÓNÐNØ&ÔØ$ŒØ"ŒØ!2ÔØŒä—9’9˜S¨¡'°Ñ9ˆŒÜ—I’I˜c¨YÑ7ˆŒ	à×0Ñ0Ô2Ø×+Ñ+Õ-r7   c                 ó  • [         R                  " [        R                  " SU R                  S   -  S-
  SU R                  S   -  S-
  -  U R
                  5      5      U l        [         R                  R                  U R                  SS9  g )Nr	   r   r   ç{®Gáz”?©Ústd)	r   Ú	Parameterr,   Úzerosr:   ru   r8   ÚinitÚtrunc_normal_©rT   s    r5   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ÐÒJr7   c                 óÄ  • [         R                  " U R                  S   5      n[         R                  " U R                  S   5      n[         R                  " [         R                  " XSS95      n[         R
                  " US5      nUS S 2S S 2S 4   US S 2S S S 24   -
  nUR                  SSS5      R                  5       nUS S 2S S 2S4==   U R                  S   S-
  -  ss'   US S 2S S 2S4==   U R                  S   S-
  -  ss'   US S 2S S 2S4==   SU R                  S   -  S-
  -  ss'   UR                  S5      R                  5       nU R                  SU5        g )Nr   r   Úij©Úindexingr	   r(   r9   )
r,   Úaranger:   ÚstackÚmeshgridÚflattenr=   r>   r‡   Úregister_buffer)rT   Úcoords_hÚcoords_wÚcoordsÚcoords_flattenÚrelative_coordsr9   s          r5   r¶   Ú5ShiftedWindowAttention.define_relative_position_index  s=  € ä—<’< × 0Ñ 0°Ñ 3Ó4ˆÜ—<’< × 0Ñ 0°Ñ 3Ó4ˆÜ—’œUŸ^š^¨HÈÑNÓOˆÜŸš v¨qÓ1ˆØ(ªªA¨t¨Ñ4°~ÂaÈÊqÀjÑ7QÑQˆØ)×1Ñ1°!°Q¸Ó:×EÑEÓGˆØšš1˜a˜Ó  D×$4Ñ$4°QÑ$7¸!Ñ$;Ñ;Ó Øšš1˜a˜Ó  D×$4Ñ$4°QÑ$7¸!Ñ$;Ñ;Ó Øšš1˜a˜Ó  A¨×(8Ñ(8¸Ñ(;Ñ$;¸aÑ$?Ñ?Ó Ø"1×"5Ñ"5°bÓ"9×"AÑ"AÓ"CÐØ×ÑÐ6Ð8OÕPr7   r%   c                 óX   • [        U R                  U R                  U R                  5      $ ©N)rB   r8   r9   r:   rÀ   s    r5   Úget_relative_position_biasÚ1ShiftedWindowAttention.get_relative_position_bias  s(   € Ü*Ø×-Ñ-¨t×/KÑ/KÈT×M]ÑM]ó
ð 	
r7   r$   c                 ób  • U R                  5       n[        UU R                  R                  U R                  R                  UU R
                  U R                  U R                  U R                  U R                  U R                  R                  U R                  R                  U R                  S9$ )ú{
Args:
    x (Tensor): Tensor with layout of [B, H, W, C]
Returns:
    Tensor with same layout as input, i.e. [B, H, W, C]
)rv   rw   rx   ry   rz   r|   )rÓ   r­   r¢   Úweightr´   r:   ru   rv   rw   rx   rL   r|   ©rT   r$   rA   s      r5   r[   ÚShiftedWindowAttention.forward#  s‚   € ð "&×!@Ñ!@Ó!BÐÜ'ØØ�H‰H�O‰OØ�I‰I×ÑØ"Ø×ÑØ�N‰NØ—‘Ø"×4Ñ4Ø—L‘LØ—X‘X—]‘]Ø—i‘i—n‘nØ—]‘]ñ
ð 	
r7   )rw   rx   ru   r´   r¢   r8   rv   r:   ©TTr„   r„   )r_   r`   ra   rb   rc   re   ÚlistÚboolr˜   rO   rµ   r¶   r,   r   rÓ   r[   rg   rh   ri   s   @r5   r¯   r¯   ê   sª   ø† ñð ØØ#&Øñ.àð.ð ˜#‘Yð.ð ˜‘Ið	.ð
 ð.ð ð.ð ð.ð !ð.ð ÷.ð .ò4KòQð
¨E¯L©Lô 
ð

˜ð 
 F÷ 
ò 
r7   r¯   c                   óž   ^ • \ rS rSrSr    SS\S\\   S\\   S\S\S\S	\S
\4U 4S jjjr	S r
S\R                  4S jrS\4S jrSrU =r$ )ÚShiftedWindowAttentionV2i;  z*
See :func:`shifted_window_attention_v2`.
rF   r:   rv   ru   ry   rz   rw   rx   c	                 ó4  >• [         T
U ]  UUUUUUUUS9  [        R                  " [        R
                  " S[        R                  " USS45      -  5      5      U l        [        R                  " [        R                  " SSSS9[        R                  " SS9[        R                  " SUS	S95      U l        U(       a\  U R                  R                  R                  5       S
-  n	U R                  R                  U	SU	-   R                  R!                  5         g g )N)ry   rz   rw   rx   é
   r   r	   i   TrK   )ÚinplaceFr€   )rN   rO   r   r¼   r,   r“   Úonesr{   Ú
SequentialrP   ÚReLUÚcpb_mlpr¢   rL   r‹   ÚdatarŒ   )rT   rF   r:   rv   ru   ry   rz   rw   rx   r¡   rU   s             €r5   rO   Ú!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Õ;ð r7   c                 ó  • [         R                  " U R                  S   S-
  * U R                  S   [         R                  S9n[         R                  " U R                  S   S-
  * U R                  S   [         R                  S9n[         R                  " [         R
                  " X/SS95      nUR                  SSS5      R                  5       R                  S5      nUS S 2S S 2S S 2S4==   U R                  S   S-
  -  ss'   US S 2S S 2S S 2S4==   U R                  S   S-
  -  ss'   US-  n[         R                  " U5      [         R                  " [         R                  " U5      S-   5      -  S	-  nU R                  S
U5        g )Nr   r   )ÚdtyperÃ   rÄ   r	   é   g      ð?g      @Úrelative_coords_table)r,   rÆ   r:   Úfloat32rÇ   rÈ   r=   r>   r?   ÚsignÚlog2ÚabsrÊ   )rT   Úrelative_coords_hÚrelative_coords_wrë   s       r5   rµ   Ú<ShiftedWindowAttentionV2.define_relative_position_bias_table_  sb  € ä!Ÿ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× ]Ñ ]Ð^_Ó `Ðàša¢¢A q˜jÓ)¨T×-=Ñ-=¸aÑ-@À1Ñ-DÑDÓ)Øša¢¢A q˜jÓ)¨T×-=Ñ-=¸aÑ-@À1Ñ-DÑDÓ)à Ñ"Ðä�JŠJÐ,Ó-´·
²
¼5¿9º9ÐEZÓ;[Ð^aÑ;aÓ0bÑbÐehÑhð 	ð 	×ÑÐ4Ð6KÕLr7   r%   c                 óà   • [        U R                  U R                  5      R                  SU R                  5      U R
                  U R                  5      nS[        R                  " U5      -  nU$ )Nr(   é   )	rB   rå   rë   r<   ru   r9   r:   r,   Úsigmoid)rT   rA   s     r5   rÓ   Ú3ShiftedWindowAttentionV2.get_relative_position_biaso  s_   € Ü!<Ø�L‰L˜×3Ñ3Ó4×9Ñ9¸"¸d¿n¹nÓMØ×(Ñ(Ø×Ñó"
Ðð
 "$¤e§m¢mÐ4JÓ&KÑ!KÐØ%Ð%r7   r$   c                 óx  • U R                  5       n[        UU R                  R                  U R                  R                  UU R
                  U R                  U R                  U R                  U R                  U R                  R                  U R                  R                  U R                  U R                  S9$ )rÖ   )rv   rw   rx   ry   rz   r{   r|   )rÓ   r­   r¢   r×   r´   r:   ru   rv   rw   rx   rL   r{   r|   rØ   s      r5   r[   Ú ShiftedWindowAttentionV2.forwardx  s‹   € ð "&×!@Ñ!@Ó!BÐÜ'ØØ�H‰H�O‰OØ�I‰I×ÑØ"Ø×ÑØ�N‰NØ—‘Ø"×4Ñ4Ø—L‘LØ—X‘X—]‘]Ø—i‘i—n‘nØ×(Ñ(Ø—]‘]ñ
ð 	
r7   )rå   r{   rÚ   )r_   r`   ra   rb   rc   re   rÛ   rÜ   r˜   rO   rµ   r,   r   rÓ   r[   rg   rh   ri   s   @r5   rÞ   rÞ   ;  s�   ø† ñð ØØ#&Øñ<àð<ð ˜#‘Yð<ð ˜‘Ið	<ð
 ð<ð ð<ð ð<ð !ð<ð ÷<ð <ò>Mð &¨E¯L©Lô &ð
˜÷ 
ò 
r7   rÞ   c                   óÒ   ^ • \ rS rSrSrSSSS\R                  \4S\S\S\	\   S\	\   S	\
S
\
S\
S\
S\S\R                  4   S\S\R                  4   4U 4S jjjrS\4S jrSrU =r$ )Ú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„   rF   ru   r:   rv   Ú	mlp_ratiorx   rw   Ústochastic_depth_probrG   .Ú
attn_layerc           	      óL  >• [         TU ]  5         [        U 5        U	" U5      U l        U
" UUUUUUS9U l        [        US5      U l        U	" U5      U l        [        U[        X-  5      U/[        R                  S US9U l        U R                  R                  5        H„  n[        U[        R                  5      (       d  M$  [        R                   R#                  UR$                  5        UR&                  c  M\  [        R                   R)                  UR&                  SS9  M†     g )N)rw   rx   Úrow)Úactivation_layerrá   rx   g�íµ ÷Æ°>rº   )rN   rO   r   Únorm1r¦   r   Ústochastic_depthÚnorm2r
   re   r   ÚGELUÚmlpÚmodulesÚ
isinstancerP   r¾   Úxavier_uniform_r×   rL   Únormal_)rT   rF   ru   r:   rv   rü   rx   rw   rý   rG   rþ   ÚmrU   s               €r5   rO   Ú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ò	 $r7   r$   c                 óÊ   • XR                  U R                  U R                  U5      5      5      -   nXR                  U R                  U R	                  U5      5      5      -   nU$ rÒ   )r  r¦   r  r  r  rZ   s     r5   r[   ÚSwinTransformerBlock.forwardÄ  sO   € Ø×%Ñ% d§i¡i°·
±
¸1³Ó&>Ó?Ñ?ˆØ×%Ñ% d§h¡h¨t¯z©z¸!«}Ó&=Ó>Ñ>ˆØˆr7   )r¦   r  r  r  r  )r_   r`   ra   rb   rc   r   rd   r¯   re   rÛ   r˜   r   rf   rO   r   r[   rg   rh   ri   s   @r5   rú   rú   ‘  sÀ   ø† ñð* ØØ#&Ø'*Ø/1¯|©|Ø/Eñ!6àð!6ð ð!6ð ˜#‘Yð	!6ð
 ˜‘Ið!6ð ð!6ð ð!6ð !ð!6ð  %ð!6ð ˜S "§)¡)˜^Ñ,ð!6ð ˜S "§)¡)˜^Ñ,÷!6ð !6ðF˜÷ ò r7   rú   c                   óÒ   ^ • \ rS rSrSrSSSS\R                  \4S\S\S\	\   S\	\   S	\
S
\
S\
S\
S\S\R                  4   S\S\R                  4   4U 4S jjjrS\4S jrSrU =r$ )Ú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„   rF   ru   r:   rv   rü   rx   rw   rý   rG   .rþ   c                 ó2   >• [         TU ]  UUUUUUUUU	U
S9
  g )N)rü   rx   rw   rý   rG   rþ   )rN   rO   )rT   rF   ru   r:   rv   rü   rx   rw   rý   rG   rþ   rU   s              €r5   rO   ÚSwinTransformerBlockV2.__init__Ú  s5   ø€ ô 	‰ÑØØØØØØØ/Ø"7Ø!Ø!ð 	ò 	
r7   r$   c                 óÊ   • XR                  U R                  U R                  U5      5      5      -   nXR                  U R                  U R	                  U5      5      5      -   nU$ rÒ   )r  r  r¦   r  r  rZ   s     r5   r[   ÚSwinTransformerBlockV2.forwardô  sQ   € ð ×%Ñ% d§j¡j°·±¸1³Ó&>Ó?Ñ?ˆØ×%Ñ% d§j¡j°·±¸!³Ó&=Ó>Ñ>ˆØˆr7   © )r_   r`   ra   rb   rc   r   rd   rÞ   re   rÛ   r˜   r   rf   rO   r   r[   rg   rh   ri   s   @r5   r  r  Ê  s¿   ø† ñð* ØØ#&Ø'*Ø/1¯|©|Ø/Gñ
àð
ð ð
ð ˜#‘Yð	
ð
 ˜‘Ið
ð ð
ð ð
ð !ð
ð  %ð
ð ˜S "§)¡)˜^Ñ,ð
ð ˜S "§)¡)˜^Ñ,÷
ð 
ð4˜÷ ò r7   r  c                   óü   ^ • \ rS rSrSrSSSSSSS\4S\\   S	\S
\\   S\\   S\\   S\S\S\S\S\S\	\
S\R                  4      S\	\
S\R                  4      S\
S\R                  4   4U 4S jjjrS rSrU =r$ )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è  NÚ
patch_sizeÚ	embed_dimÚdepthsru   r:   rü   rx   rw   rý   Únum_classesrG   .ÚblockÚdownsample_layerc                 ó–  >• [         TU ]  5         [        U 5        X l        Uc  [        nUc  [        [        R                  SS9n/ nUR                  [        R                  " [        R                  " SX!S   US   4US   US   4S9[        / SQ5      U" U5      5      5        [        U5      nSn[        [        U5      5       HÈ  n/ nUSU-  -  n[        UU   5       H[  nU	[        U5      -  US-
  -  nUR                  U" UUU   UU Vs/ s H  nUS-  S:X  a  SOUS-  PM     snUUUUUS	9	5        US-  nM]     UR                  [        R                  " U6 5        U[        U5      S-
  :  d  M°  UR                  U" UU5      5        MÊ     [        R                  " U6 U l        US[        U5      S-
  -  -  nU" U5      U l        [        / S
Q5      U l        [        R&                  " S5      U l        [        R*                  " S5      U l        [        R.                  " UU
5      U l        U R3                  5        H„  n[5        U[        R.                  5      (       d  M$  [        R6                  R9                  UR:                  SS9  UR<                  c  M[  [        R6                  R?                  UR<                  5        M†     g s  snf )Ngñhãˆµøä>)Úepsr€   r   r   )Úkernel_sizeÚstride)r   r	   r€   r   r	   )r:   rv   rü   rx   rw   rý   rG   )r   r€   r   r	   r¹   rº   ) rN   rO   r   r  rú   r   r   rd   Úappendrã   ÚConv2dr   r‡   Úranger²   r˜   ÚfeaturesrR   r=   ÚAdaptiveAvgPool2dÚavgpoolÚFlattenrÉ   rP   Úheadr  r  r¾   r¿   r×   rL   Úzeros_)rT   r  r  r  ru   r:   rü   rx   rw   rý   r  rG   r  r  ÚlayersÚtotal_stage_blocksÚstage_block_idÚi_stageÚstagerF   Úi_layerÚsd_probr¬   Únum_featuresr  rU   s                            €r5   rO   Ú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   ÄKc                 óÒ   • U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU$ rÒ   )r$  rR   r=   r&  rÉ   r(  rZ   s     r5   r[   ÚSwinTransformer.forward_  sV   € Ø�M‰M˜!ÓˆØ�I‰I�a‹LˆØ�L‰L˜‹OˆØ�L‰L˜‹OˆØ�L‰L˜‹OˆØ�I‰I�a‹LˆØˆr7   )r&  r$  rÉ   r(  rR   r  r=   )r_   r`   ra   rb   rc   rD   rÛ   re   r˜   r   r   r   rf   rO   r[   rg   rh   ri   s   @r5   r   r   ü  s  ø† ñð4 ØØ#&Ø'*ØØ9=Ø48Ø5Añ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+ð M+÷^ð r7   r   r  r  r  rý   ÚweightsÚprogressÚkwargsc           
      óº   • Ub#  [        US[        UR                  S   5      5        [        SU UUUUUS.UD6n	Ub  U	R	                  UR                  USS95        U	$ )Nr  Ú
categories)r  r  r  ru   r:   rý   T)r6  Ú
check_hashr  )r   r²   Úmetar   Úload_state_dictÚget_state_dict)
r  r  r  ru   r:   rý   r5  r6  r7  Úmodels
             r5   Ú_swin_transformerr?  i  s{   € ð ÑÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUäð ØØØØØØ3ñð ñ€Eð ÑØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÐXÔYà€Lr7   r9  c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   iŒ  z7https://download.pytorch.org/models/swin_t-704ceda3.pthéà   éè   ©Ú	crop_sizeÚresize_sizeÚinterpolationib¥¯©rA  rA  úUhttps://github.com/pytorch/vision/tree/main/references/classification#swintransformerúImageNet-1Kgu“V^T@g‹lçû©ñW@©zacc@1zacc@5gX9´Èö@g\�Âõ([@úYThese weights reproduce closely the results of the paper using a similar training recipe.©Ú
num_paramsÚmin_sizeÚrecipeÚ_metricsÚ_opsÚ
_file_sizeÚ_docs©ÚurlÚ
transformsr;  r  N©r_   r`   ra   rb   r   r   r   r   ÚBICUBICÚ_COMMON_METAÚIMAGENET1K_V1ÚDEFAULTrg   r  r7   r5   r   r   Œ  sg   † ÙØEÙØ¨3¸CÐO`×OhÑOhñ
ð
Øð
à"Ø"ØmàØ#Ø#ñ ðð Ø Øtò
ñ€Mð* ƒGr7   r   c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   i¥  z7https://download.pytorch.org/models/swin_s-5e29d889.pthrA  éö   rC  irîôrG  rH  rI  g�•C‹ÌT@g×£p=
X@rJ  g¬Zd{!@gþÔxé&¹g@rK  rL  rT  r  NrW  r  r7   r5   r   r   ¥  sg   † ÙØEÙØ¨3¸CÐO`×OhÑOhñ
ð
Øð
à"Ø"ØmàØ#Ø#ñ ðð Ø!Øtò
ñ€Mð* ƒGr7   r   c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   i¾  z7https://download.pytorch.org/models/swin_b-68c6b09e.pthrA  éî   rC  i <;rG  rH  rI  gh‘í|?åT@g)\�Âõ(X@rJ  gé&1¬Ü.@gçû©ñÒõt@rK  rL  rT  r  NrW  r  r7   r5   r   r   ¾  sg   † ÙØEÙØ¨3¸CÐO`×OhÑOhñ
ð
Øð
à"Ø"ØmàØ#Ø#ñ ðð Ø!Øtò
ñ€Mð* ƒGr7   r   c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   i×  z:https://download.pytorch.org/models/swin_v2_t-b137f0e2.pthé   é  rC  iRœ°©ra  ra  úXhttps://github.com/pytorch/vision/tree/main/references/classification#swintransformer-v2rI  gøSã¥›„T@gœÄ °rX@rJ  gÃõ(\�Â@gòÒMb([@rK  rL  rT  r  NrW  r  r7   r5   r   r   ×  sg   † ÙØHÙØ¨3¸CÐO`×OhÑOhñ
ð
Øð
à"Ø"ØpàØ#Ø#ñ ðð Ø!Øtò
ñ€Mð* ƒGr7   r   c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   ið  z:https://download.pytorch.org/models/swin_v2_s-637d8ceb.pthra  rb  rC  iâîörc  rd  rI  g!°rh‘íT@gNbX94X@rJ  gd;ßO�'@gš™™™™Õg@rK  rL  rT  r  NrW  r  r7   r5   r   r   ð  óg   † ÙØHÙØ¨3¸CÐO`×OhÑOhñ
ð
Øð
à"Ø"ØpàØ#Ø#ñ ðð Ø!Øtò
ñ€Mð* ƒGr7   r   c                   ól   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSS	S
SS.0SSSS.ES9r
\
rSrg)r   i	  z:https://download.pytorch.org/models/swin_v2_b-781e5279.pthra  i  rC  ià·=rc  rd  rI  gºI+U@gžï§ÆK7X@rJ  g33333S4@gË¡E¶óu@rK  rL  rT  r  NrW  r  r7   r5   r   r   	  rf  r7   r   Ú
pretrained)r5  )r5  r6  c                 ód   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU US.UD6$ )	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:
rJ   é`   ©r	   r	   é   r	   ©r€   rl  é   é   é   çš™™™™™É?©r  r  r  ru   r:   rý   r5  r6  r  )r   Úverifyr?  ©r5  r6  r7  s      r5   r   r   "  sP   € ô. ×#Ñ# GÓ,€Gäð 
Ø�q�6ØÚÚ Ø˜�FØ!ØØñ
ð ñ
ð 
r7   c                 ód   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU US.UD6$ )	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:
rJ   rj  ©r	   r	   é   r	   rm  rp  ç333333Ó?rr  r  )r   rs  r?  rt  s      r5   r   r   H  sP   € ô. ×#Ñ# GÓ,€Gäð 
Ø�q�6ØÚÚ Ø˜�FØ!ØØñ
ð ñ
ð 
r7   c                 ód   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU US.UD6$ )	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:
rJ   é€   rv  ©rJ   rê   rô   é    rp  ç      à?rr  r  )r   rs  r?  rt  s      r5   r    r    n  sP   € ô. ×#Ñ# GÓ,€Gäð 
Ø�q�6ØÚÚ Ø˜�FØ!ØØñ
ð ñ
ð 
r7   c                 óx   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU U[        [        S.
UD6$ )	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:
rJ   rj  rk  rm  rê   rq  ©
r  r  r  ru   r:   rý   r5  r6  r  r  r  )r   rs  r?  r  rl   rt  s      r5   r!   r!   ”  sV   € ô.  ×&Ñ& wÓ/€Gäð Ø�q�6ØÚÚ Ø˜�FØ!ØØÜ$Ü'ñð ñð r7   c                 óx   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU U[        [        S.
UD6$ )	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:
rJ   rj  rv  rm  rê   rx  r  r  )r   rs  r?  r  rl   rt  s      r5   r"   r"   ¼  sV   € ô.  ×&Ñ& wÓ/€Gäð Ø�q�6ØÚÚ Ø˜�FØ!ØØÜ$Ü'ñð ñð r7   c                 óx   • [         R                  U 5      n [        SSS/S/ SQ/ SQSS/SU U[        [        S.
UD6$ )	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:
rJ   rz  rv  r{  rê   r}  r  r  )r   rs  r?  r  rl   rt  s      r5   r#   r#   ä  sV   € ô.  ×&Ñ& wÓ/€Gäð Ø�q�6ØÚÚ Ø˜�FØ!ØØÜ$Ü'ñð ñð r7   )r„   r„   NNNT)Ar’   Ú	functoolsr   Útypingr   r   r   r,   Útorch.nn.functionalr   Ú
functionalr*   r   Úops.miscr
   r   Úops.stochastic_depthr   Útransforms._presetsr   r   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r6   ÚfxÚwraprÛ   re   rB   rf   rD   rl   r˜   rÜ   r­   r¯   rÞ   rú   r  r   r?  rY  r   r   r   r   r   r   rZ  r   r   r    r!   r"   r#   r  r7   r5   Ú<module>r�     sõ  ðÛ Ý ß *Ñ *ã ß Ð ß ç #Ý 2ß HÝ 'ß 6Ñ 6Ý 'ß Bò€ð"˜%Ÿ,™,ð ¨5¯<©<ô ð ‡�‡�Ð"Ô #ð"Ø"'§,¡,ð"ØINÏÉð"ØdhÐilÑdmð"à
‡\�\ô"ð ‡�‡�Ð+Ô ,ô�2—9‘9ô ô6�R—Y‘Yô ðF  #ØØ!%Ø"&Ø*.ØñpØðpàðpð ðpð #ð	pð
 �c‘ðpð ðpð �S‘	ðpð ðpð ðpð �vÑðpð ˜Ñðpð ˜%Ÿ,™,Ñ'ðpð ðpð õpð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Ø�S‘	ðàðð �‰Iðð �C‰yð	ð
 �c‘ðð !ðð �kÑ"ðð ðð ðð ôð> Ð&ð€ô
�[ô ô2�[ô ô2�[ô ô2˜ô ô2˜ô ô2˜ô ñ2 ÓÙ ,°×0LÑ0LÐ!MÑNØ26Èò !�x Ñ/ð !À$ð !ÐY\ð !Ðapô !ó Oó ð!ñH ÓÙ ,°×0LÑ0LÐ!MÑNØ26Èò !�x Ñ/ð !À$ð !ÐY\ð !Ðapô !ó Oó ð!ñH ÓÙ ,°×0LÑ0LÐ!MÑNØ26Èò !�x Ñ/ð !À$ð !ÐY\ð !Ðapô !ó Oó ð!ñH ÓÙ ,Ð0A×0OÑ0OÐ!PÑQØ8<Ètò #˜(Ð#4Ñ5ð #Èð #Ð_bð #Ðgvô #ó Ró ð#ñL ÓÙ ,Ð0A×0OÑ0OÐ!PÑQØ8<Ètò #˜(Ð#4Ñ5ð #Èð #Ð_bð #Ðgvô #ó Ró ð#ñL ÓÙ ,Ð0A×0OÑ0OÐ!PÑQØ8<Ètò #˜(Ð#4Ñ5ð #Èð #Ð_bð #Ðgvô #ó Ró ñ#r7   