ó
    Eñi|}  ã                   óJ  • % S SK r S SKJr  S SKJr  S SKJrJrJrJ	r	  S SK
r
S SK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Jr  S	SKJr  S	SKJrJr  / SQr " S S\5      r " S S\5      r  " S S\RB                  5      r" " S S\RB                  5      r# " S S\RB                  5      r$S\%S\%S\%S\%S\%S\	\   S\&S\S \$4S! jr'S"\0r(\)\*\4   \+S#'   0 \(ES$S%S&.Er, " S' S(\5      r- " S) S*\5      r. " S+ S,\5      r/ " S- S.\5      r0 " S/ S0\5      r1\" 5       \" S1\-Rd                  4S29SS3S4.S\	\-   S\&S\S \$4S5 jj5       5       r3\" 5       \" S1\.Rd                  4S29SS3S4.S\	\.   S\&S\S \$4S6 jj5       5       r4\" 5       \" S1\/Rd                  4S29SS3S4.S\	\/   S\&S\S \$4S7 jj5       5       r5\" 5       \" S1\0Rd                  4S29SS3S4.S\	\0   S\&S\S \$4S8 jj5       5       r6\" 5       \" S9S29SS3S4.S\	\1   S\&S\S \$4S: jj5       5       r7  SAS;\%S\%S<S=S>\*S?\&S S=4S@ jjr8g)Bé    N)ÚOrderedDict)Úpartial)ÚAnyÚCallableÚ
NamedTupleÚOptionalé   )ÚConv2dNormActivationÚMLP)ÚImageClassificationÚInterpolationMode)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)ÚVisionTransformerÚViT_B_16_WeightsÚViT_B_32_WeightsÚViT_L_16_WeightsÚViT_L_32_WeightsÚViT_H_14_WeightsÚvit_b_16Úvit_b_32Úvit_l_16Úvit_l_32Úvit_h_14c                   ó´   • \ rS rSr% \\S'   \\S'   \\S'   \R                  r\	S\R                  4   \S'   \R                  r\	S\R                  4   \S'   Srg	)
ÚConvStemConfigé    Úout_channelsÚkernel_sizeÚstride.Ú
norm_layerÚactivation_layer© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚ__annotations__ÚnnÚBatchNorm2dr'   r   ÚModuleÚReLUr(   Ú__static_attributes__r)   ó    Úb/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torchvision/models/vision_transformer.pyr"   r"       sJ   ‡ ØÓØÓØƒKØ+-¯>©>€J�˜˜bŸi™i˜Ñ(Ó9Ø13·±Ð�h˜s B§I¡I˜~Ñ.Ö8r5   r"   c                   óL   ^ • \ rS rSrSrSrS\S\S\4U 4S jjrU 4S jr	S	r
U =r$ )
ÚMLPBlocké(   zTransformer MLP block.r	   Úin_dimÚmlp_dimÚdropoutc                 óv  >• [         TU ]  XU/[        R                  S US9  U 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)r(   Úinplacer<   ç�íµ ÷Æ°>©Ústd)ÚsuperÚ__init__r0   ÚGELUÚmodulesÚ
isinstanceÚLinearÚinitÚxavier_uniform_ÚweightÚbiasÚnormal_)Úselfr:   r;   r<   ÚmÚ	__class__s        €r6   rC   ÚMLPBlock.__init__-   s}   ø€ Ü‰Ñ˜¨6Ð!2ÄRÇWÁWÐVZÐdkÐÑlà—‘–ˆAÜ˜!œRŸY™Y×'Ó'Ü—‘×'Ñ'¨¯©Ô1Ø—6‘6Ó%Ü—G‘G—O‘O A§F¡F°�OÓ5ò	  r5   c           	      ó  >• UR                  SS 5      nUb  US:  aN  [        S5       H?  n	S H6  n
U SU	S-    SU
 3nU SU	-   SU
 3nX±;   d  M#  UR                  U5      X'   M8     MA     [        TU ]  UUUUUUU5        g )NÚversionr	   )rJ   rK   Úlinear_r   Ú.é   )ÚgetÚrangeÚpoprB   Ú_load_from_state_dict)rM   Ú
state_dictÚprefixÚlocal_metadataÚstrictÚmissing_keysÚunexpected_keysÚ
error_msgsrR   ÚiÚtypeÚold_keyÚnew_keyrO   s                €r6   rY   ÚMLPBlock._load_from_state_dict6   s§   ø€ ð !×$Ñ$ Y°Ó5ˆà‰?˜g¨›kä˜1–X�Û.�DØ!' ¨°°!±¨u°A°d°VÐ<�GØ!' ¨¨1©¨¨Q¨t¨fÐ5�GØÕ,Ø.8¯n©n¸WÓ.E˜
Ó+ó	 /ñ ô 	‰Ñ%ØØØØØØØõ	
r5   r)   )r*   r+   r,   r-   Ú__doc__Ú_versionr.   ÚfloatrC   rY   r4   Ú__classcell__©rO   s   @r6   r8   r8   (   s/   ø† Ù à€Hð6˜sð 6¨Sð 6¸5÷ 6÷
ó 
r5   r8   c                   óÀ   ^ • \ rS rSrSr\" \R                  SS94S\S\S\S\	S	\	S
\
S\R                  R                  4   4U 4S jjjrS\R                  4S jrSrU =r$ )ÚEncoderBlockéV   zTransformer encoder block.r?   ©ÚepsÚ	num_headsÚ
hidden_dimr;   r<   Úattention_dropoutr'   .c                 óð   >• [         TU ]  5         Xl        U" U5      U l        [        R
                  " X!USS9U l        [        R                  " U5      U l        U" U5      U l	        [        X#U5      U l        g )NT)r<   Úbatch_first)rB   rC   rp   Úln_1r0   ÚMultiheadAttentionÚself_attentionÚDropoutr<   Úln_2r8   Úmlp)rM   rp   rq   r;   r<   rr   r'   rO   s          €r6   rC   ÚEncoderBlock.__init__Y   sh   ø€ ô 	‰ÑÔØ"Œñ ˜zÓ*ˆŒ	Ü ×3Ò3°JÐSdÐrvÑwˆÔÜ—z’z 'Ó*ˆŒñ ˜zÓ*ˆŒ	Ü˜J°Ó9ˆ�r5   Úinputc                 ó*  • [         R                  " UR                  5       S:H  SUR                   35        U R	                  U5      nU R                  X"USS9u  p#U R                  U5      nX!-   nU R                  U5      nU R                  U5      nX$-   $ )NrU   ú2Expected (batch_size, seq_length, hidden_dim) got F)Úneed_weights)	ÚtorchÚ_assertÚdimÚshaperu   rw   r<   ry   rz   )rM   r|   ÚxÚ_Úys        r6   ÚforwardÚEncoderBlock.forwardn   s‡   € Ü�Š�e—i‘i“k QÑ&Ð*\Ð]b×]hÑ]hÐ\iÐ(jÔkØ�I‰I�eÓˆØ×"Ñ" 1¨¸Ð"Ð?‰ˆØ�L‰L˜‹OˆØ‰Iˆà�I‰I�a‹LˆØ�H‰H�Q‹KˆØ‰uˆr5   )r<   ru   ry   rz   rp   rw   ©r*   r+   r,   r-   rf   r   r0   Ú	LayerNormr.   rh   r   r€   r2   rC   ÚTensorr‡   r4   ri   rj   s   @r6   rl   rl   V   s�   ø† Ù$ñ 6=¸R¿\¹\ÈtÑ5Tñ:àð:ð ð:ð ð	:ð
 ð:ð !ð:ð ˜S %§(¡(§/¡/Ð1Ñ2÷:ð :ð*	˜UŸ\™\÷ 	ò 	r5   rl   c                   óÈ   ^ • \ rS rSrSr\" \R                  SS94S\S\S\S\S	\S
\	S\	S\
S\R                  R                  4   4U 4S jjjrS\R                  4S jrSrU =r$ )ÚEncoderéz   z?Transformer Model Encoder for sequence to sequence translation.r?   rn   Ú
seq_lengthÚ
num_layersrp   rq   r;   r<   rr   r'   .c	           	      ó†  >• [         TU ]  5         [        R                  " [        R
                  " SX5      R                  SS95      U l        [        R                  " U5      U l	        [        5       n	[        U5       H  n
[        UUUUUU5      U	SU
 3'   M     [        R                  " U	5      U l        U" U5      U l        g )Nr   g{®Gáz”?r@   Úencoder_layer_)rB   rC   r0   Ú	Parameterr€   ÚemptyrL   Úpos_embeddingrx   r<   r   rW   rl   Ú
SequentialÚlayersÚln)rM   r�   r�   rp   rq   r;   r<   rr   r'   r—   ra   rO   s              €r6   rC   ÚEncoder.__init__}   s©   ø€ ô 	‰ÑÔô  Ÿ\š\¬%¯+ª+°a¸Ó*P×*XÑ*XÐ]aÐ*XÐ*bÓcˆÔÜ—z’z 'Ó*ˆŒÜ.9«mˆÜ�zÖ"ˆAÜ+7ØØØØØ!Øó,ˆF�^ A 3Ð'Ó(ñ #ô —m’m FÓ+ˆŒÙ˜ZÓ(ˆ�r5   r|   c                 óæ   • [         R                  " UR                  5       S:H  SUR                   35        XR                  -   nU R                  U R                  U R                  U5      5      5      $ )NrU   r~   )r€   r�   r‚   rƒ   r•   r˜   r—   r<   )rM   r|   s     r6   r‡   ÚEncoder.forwardš   sZ   € Ü�Š�e—i‘i“k QÑ&Ð*\Ð]b×]hÑ]hÐ\iÐ(jÔkØ×*Ñ*Ñ*ˆØ�w‰w�t—{‘{ 4§<¡<°Ó#6Ó7Ó8Ð8r5   )r<   r—   r˜   r•   r‰   rj   s   @r6   r�   r�   z   s•   ø† ÙIñ 6=¸R¿\¹\ÈtÑ5Tñ)àð)ð ð)ð ð	)ð
 ð)ð ð)ð ð)ð !ð)ð ˜S %§(¡(§/¡/Ð1Ñ2÷)ð )ð:9˜UŸ\™\÷ 9ò 9r5   r�   c                   ó.  ^ • \ rS rSrSrSSSS\" \R                  SS9S4S\S	\S
\S\S\S\S\	S\	S\S\
\   S\S\R                  R                  4   S\
\\      4U 4S jjjrS\R"                  S\R"                  4S jrS\R"                  4S jrSrU =r$ )r   é    z;Vision Transformer as per https://arxiv.org/abs/2010.11929.ç        iè  Nr?   rn   Ú
image_sizeÚ
patch_sizer�   rp   rq   r;   r<   rr   Únum_classesÚrepresentation_sizer'   .Úconv_stem_configsc                 óò  >• [         TU ]  5         [        U 5        [        R                  " X-  S:H  S5        Xl        X l        XPl        X`l        X€l	        Xpl
        X�l        X l        X°l        Ub·  [        R                  " 5       nSn[!        U5       He  u  nnUR#                  SU 3[%        UUR&                  UR(                  UR*                  UR                  UR,                  S95        UR&                  nMg     UR#                  S[        R.                  " XåSS95        XÐl        O[        R.                  " SXRUS	9U l        X-  S
-  n[        R2                  " [        R4                  " SSU5      5      U l        US-  n[9        UUUUUUUU5      U l        UU l        [?        5       nU
c  [        R@                  " XY5      US'   OJ[        R@                  " XZ5      US'   [        RB                  " 5       US'   [        R@                  " X©5      US'   [        R                  " U5      U l"        [G        U R0                  [        R.                  5      (       aß  U R0                  RH                  U R0                  R(                  S   -  U R0                  R(                  S   -  n[        RJ                  RM                  U R0                  RN                  [P        RR                  " SU-  5      S9  U R0                  RT                  b3  [        RJ                  RW                  U R0                  RT                  5        GOU R0                  RX                  Gb  [G        U R0                  RX                  [        R.                  5      (       aÐ  [        RJ                  R[                  U R0                  RX                  RN                  S[P        RR                  " SU R0                  RX                  R&                  -  5      S9  U R0                  RX                  RT                  b=  [        RJ                  RW                  U R0                  RX                  RT                  5        []        U RD                  S5      (       aã  [G        U RD                  R^                  [        R@                  5      (       a°  U RD                  R^                  R`                  n[        RJ                  RM                  U RD                  R^                  RN                  [P        RR                  " SU-  5      S9  [        RJ                  RW                  U RD                  R^                  RT                  5        [G        U RD                  Rb                  [        R@                  5      (       a{  [        RJ                  RW                  U RD                  Rb                  RN                  5        [        RJ                  RW                  U RD                  Rb                  RT                  5        g g )Nr   z&Input shape indivisible by patch size!rU   Úconv_bn_relu_)Úin_channelsr$   r%   r&   r'   r(   Ú	conv_lastr   )r¦   r$   r%   )r¦   r$   r%   r&   r	   ÚheadÚ
pre_logitsÚactr@   rž   g       @)ÚmeanrA   )2rB   rC   r   r€   r�   rŸ   r    rq   r;   rr   r<   r¡   r¢   r'   r0   r–   Ú	enumerateÚ
add_moduler
   r$   r%   r&   r(   ÚConv2dÚ	conv_projr“   ÚzerosÚclass_tokenr�   Úencoderr�   r   rG   ÚTanhÚheadsrF   r¦   rH   Útrunc_normal_rJ   ÚmathÚsqrtrK   Úzeros_r§   rL   Úhasattrr©   Úin_featuresr¨   )rM   rŸ   r    r�   rp   rq   r;   r<   rr   r¡   r¢   r'   r£   Úseq_projÚprev_channelsra   Úconv_stem_layer_configr�   Úheads_layersÚfan_inrO   s                       €r6   rC   ÚVisionTransformer.__init__£   s?  ø€ ô 	‰ÑÔÜ˜DÔ!Ü�Š�jÑ-°Ñ2Ð4\Ô]Ø$ŒØ$ŒØ$ŒØŒØ!2ÔØŒØ&ÔØ#6Ô Ø$ŒàÑ(ä—}’}“ˆHØˆMÜ-6Ð7HÖ-IÑ)�Ð)Ø×#Ñ#Ø# A 3Ð'Ü(Ø$1Ø%;×%HÑ%HØ$:×$FÑ$FØ5×<Ñ<Ø#9×#DÑ#DØ)?×)PÑ)Pñô
ð !7× CÑ C’ñ .Jð ×ÑØœRŸYšY°=ÐghÑiôð )1�NäŸYšYØ¨JÐWañˆDŒNð !Ñ.°1Ñ4ˆ
ô Ÿ<š<¬¯ª°A°q¸*Ó(EÓFˆÔØ�a‰ˆ
äØØØØØØØØó	
ˆŒð %ˆŒä4?³MˆØÑ&Ü#%§9¢9¨ZÓ#EˆL˜Ò ä)+¯ª°:Ó)SˆL˜Ñ&Ü"$§'¢'£)ˆL˜ÑÜ#%§9¢9Ð-@Ó#NˆL˜Ñ ä—]’] <Ó0ˆŒ
ä�d—n‘n¤b§i¡i×0Ñ0à—^‘^×/Ñ/°$·.±.×2LÑ2LÈQÑ2OÑOÐRV×R`ÑR`×RlÑRlÐmnÑRoÑoˆFÜ�G‰G×!Ñ! $§.¡.×"7Ñ"7¼T¿YºYÀqÈ6ÁzÓ=RÐ!ÑSØ�~‰~×"Ñ"Ñ.Ü—‘—‘˜tŸ~™~×2Ñ2Ô3ùØ�^‰^×%Ñ%Ò1´jÀÇÁ×AYÑAYÔ[]×[dÑ[d×6eÑ6eä�G‰G�O‰OØ—‘×(Ñ(×/Ñ/°c¼t¿yºyÈÈtÏ~É~×OgÑOg×OtÑOtÑItÓ?uð ñ ð �~‰~×'Ñ'×,Ñ,Ñ8Ü—‘—‘˜tŸ~™~×7Ñ7×<Ñ<Ô=ä�4—:‘:˜|×,Ñ,´¸D¿J¹J×<QÑ<QÔSU×S\ÑS\×1]Ñ1]Ø—Z‘Z×*Ñ*×6Ñ6ˆFÜ�G‰G×!Ñ! $§*¡*×"7Ñ"7×">Ñ">ÄDÇIÂIÈaÐRXÉjÓDYÐ!ÑZÜ�G‰G�N‰N˜4Ÿ:™:×0Ñ0×5Ñ5Ô6ä�d—j‘j—o‘o¤r§y¡y×1Ñ1Ü�G‰G�N‰N˜4Ÿ:™:Ÿ?™?×1Ñ1Ô2Ü�G‰G�N‰N˜4Ÿ:™:Ÿ?™?×/Ñ/Õ0ð 2r5   r„   Úreturnc                 ó   • UR                   u  p#pEU R                  n[        R                  " X@R                  :H  SU R                   SU S35        [        R                  " XPR                  :H  SU R                   SU S35        XF-  nXV-  nU R                  U5      nUR                  X R                  Xx-  5      nUR                  SSS5      nU$ )NzWrong image height! Expected z	 but got Ú!zWrong image width! Expected r   r	   r   )	rƒ   r    r€   r�   rŸ   r¯   Úreshaperq   Úpermute)	rM   r„   ÚnÚcÚhÚwÚpÚn_hÚn_ws	            r6   Ú_process_inputÚ VisionTransformer._process_input  sÁ   € Ø—W‘W‰
ˆˆaØ�O‰OˆÜ�Š�aŸ?™?Ñ*Ð.KÈDÏOÉOÐK\Ð\eÐfgÐehÐhiÐ,jÔkÜ�Š�aŸ?™?Ñ*Ð.JÈ4Ï?É?ÐJ[Ð[dÐefÐdgÐghÐ,iÔjØ‰fˆØ‰fˆð �N‰N˜1Óˆà�I‰I�aŸ™¨#©)Ó4ˆð �I‰I�a˜˜AÓˆàˆr5   c                 ó  • U R                  U5      nUR                  S   nU R                  R                  USS5      n[        R
                  " X1/SS9nU R                  U5      nUS S 2S4   nU R                  U5      nU$ )Nr   éÿÿÿÿr   ©r‚   )rÍ   rƒ   r±   Úexpandr€   Úcatr²   r´   )rM   r„   rÆ   Úbatch_class_tokens       r6   r‡   ÚVisionTransformer.forward!  s~   € à×Ñ Ó"ˆØ�G‰G�A‰Jˆð !×,Ñ,×3Ñ3°A°r¸2Ó>ÐÜ�IŠIÐ(Ð,°!Ñ4ˆà�L‰L˜‹Oˆð Ša�ˆd‰Gˆà�J‰J�q‹Mˆàˆr5   )rr   r±   r¯   r<   r²   r´   rq   rŸ   r;   r'   r¡   r    r¢   r�   )r*   r+   r,   r-   rf   r   r0   rŠ   r.   rh   r   r   r€   r2   Úlistr"   rC   r‹   rÍ   r‡   r4   ri   rj   s   @r6   r   r       s  ø† ÙEð Ø#&ØØ-1Ù5<¸R¿\¹\ÈtÑ5TØ<@ñg1àðg1ð ðg1ð ð	g1ð
 ðg1ð ðg1ð ðg1ð ðg1ð !ðg1ð ðg1ð & c™]ðg1ð ˜S %§(¡(§/¡/Ð1Ñ2ðg1ð $ D¨Ñ$8Ñ9÷g1ð g1ðR §¡ð °·±ô ð*˜Ÿ™÷ ò r5   r   r    r�   rp   rq   r;   ÚweightsÚprogressÚkwargsrÁ   c           
      óp  • Ubh  [        US[        UR                  S   5      5        UR                  S   S   UR                  S   S   :X  d   e[        USUR                  S   S   5        UR                  SS5      n[	        SUU UUUUS.UD6n	U(       a  U	R                  UR                  US	S
95        U	$ )Nr¡   Ú
categoriesÚmin_sizer   r   rŸ   éà   )rŸ   r    r�   rp   rq   r;   T)rØ   Ú
check_hashr)   )r   ÚlenÚmetarX   r   Úload_state_dictÚget_state_dict)
r    r�   rp   rq   r;   r×   rØ   rÙ   rŸ   Úmodels
             r6   Ú_vision_transformerrä   4  sÌ   € ð ÑÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUØ�|‰|˜JÑ'¨Ñ*¨g¯l©l¸:Ñ.FÀqÑ.IÓIÐIÐIÜ˜f l°G·L±LÀÑ4LÈQÑ4OÔPØ—‘˜L¨#Ó.€Jäð ØØØØØØñð ñ€Eö Ø×Ñ˜g×4Ñ4¸hÐSWÐ4ÐXÔYà€Lr5   rÛ   Ú_COMMON_METAz(https://github.com/facebookresearch/SWAGz:https://github.com/facebookresearch/SWAG/blob/main/LICENSE)ÚrecipeÚlicensec                   óú   • \ rS rSr\" S\" \SS90 \ESSSSS	S
S.0SSSS.ES9r\" S\" \SS\	R                  S90 \ESSSSSS.0SSSS.ES9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_  z9https://download.pytorch.org/models/vit_b_16-c867db91.pthrÝ   ©Ú	crop_sizeièê(©rÝ   rÝ   zNhttps://github.com/pytorch/vision/tree/main/references/classification#vit_b_16úImageNet-1KgøSã¥›DT@g1¬ZÔW@©zacc@1zacc@5gªñÒMb�1@gÃõ(\�¤t@ú²
                These weights were trained from scratch by using a modified version of `DeIT
                <https://arxiv.org/abs/2012.12877>`_'s training recipe.
            ©Ú
num_paramsrÜ   ræ   Ú_metricsÚ_opsÚ
_file_sizeÚ_docs©ÚurlÚ
transformsrà   z>https://download.pytorch.org/models/vit_b_16_swag-9ac1b537.pthé€  ©rê   Úresize_sizeÚinterpolationiè^-)rø   rø   gú~j¼tSU@gš™™™™iX@gË¡E¶ó½K@gî|?5^¶t@úË
                These weights are learnt via transfer learning by end-to-end fine-tuning the original
                `SWAG <https://arxiv.org/abs/2201.08371>`_ weights on ImageNet-1K data.
            ©rð   rÜ   rñ   rò   ró   rô   zAhttps://download.pytorch.org/models/vit_b_16_lc_swag-4e70ced5.pthú+https://github.com/pytorch/vision/pull/5793gbX9´xT@gìQ¸…X@úã
                These weights are composed of the original frozen `SWAG <https://arxiv.org/abs/2201.08371>`_ trunk
                weights and a linear classifier learnt on top of them trained on ImageNet-1K data.
            ©ræ   rð   rÜ   rñ   rò   ró   rô   r)   N©r*   r+   r,   r-   r   r   r   rå   ÚIMAGENET1K_V1r   ÚBICUBICÚ_COMMON_SWAG_METAÚIMAGENET1K_SWAG_E2E_V1ÚIMAGENET1K_SWAG_LINEAR_V1ÚDEFAULTr4   r)   r5   r6   r   r   _  s#  † ÙØGÙÐ.¸#Ñ>ð
Øð
à"Ø"ØfàØ#Ø#ñ ðð Ø!ðò
ñ€Mñ, %ØLÙØØØØ+×3Ñ3ñ	
ð
Øð
à"Ø"àØ#Ø#ñ ðð Ø!ðò
ñÐñ4 !(ØOÙØØØØ+×3Ñ3ñ	
ð
Øð
àCØ"Ø"àØ#Ø#ñ ðð Ø!ðò
ñ!Ðð6 ƒGr5   r   c                   óT   • \ rS rSr\" S\" \S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®  z9https://download.pytorch.org/models/vit_b_32-d86f8d99.pthrÝ   ré   iè1Brë   zNhttps://github.com/pytorch/vision/tree/main/references/classification#vit_b_32rì   gî|?5^úR@gçû©ñÒW@rí   g‰A`åÐ¢@g‹lçû©	u@rî   rï   rõ   r)   N©r*   r+   r,   r-   r   r   r   rå   r  r  r4   r)   r5   r6   r   r   ®  s\   † ÙØGÙÐ.¸#Ñ>ð
Øð
à"Ø"ØfàØ#Ø#ñ ðð Ø!ðò
ñ€Mð, ƒGr5   r   c                   óü   • \ rS rSr\" S\" \SSS90 \ESSSS	S
SS.0SSSS.ES9r\" S\" \SS\	R                  S90 \ESSS	SSS.0SSSS.ES9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È  z9https://download.pytorch.org/models/vit_l_16-852ce7e3.pthrÝ   éò   )rê   rú   iè§#rë   zNhttps://github.com/pytorch/vision/tree/main/references/classification#vit_l_16rì   gî|?5^êS@gF¶óýÔ¨W@rí   g×£p=
ÇN@g;ßO�$’@a  
                These weights were trained from scratch by using a modified version of TorchVision's
                `new training recipe
                <https://pytorch.org/blog/how-to-train-state-of-the-art-models-using-torchvision-latest-primitives/>`_.
            rï   rõ   z>https://download.pytorch.org/models/vit_l_16_swag-4f3808c9.pthé   rù   iè—0)r  r  gj¼t“V@gTã¥›Ä X@g²�ï§ÆŸv@gyé&11’@rü   rý   zAhttps://download.pytorch.org/models/vit_l_16_lc_swag-4d563306.pthrþ   gÓMbXIU@g^ºI[X@rÿ   r   r)   Nr  r)   r5   r6   r   r   È  s%  † ÙØGÙÐ.¸#È3ÑOð
Øð
à#Ø"ØfàØ#Ø#ñ ðð Ø"ðò
ñ€Mñ. %ØLÙØØØØ+×3Ñ3ñ	
ð
Øð
à#Ø"àØ#Ø#ñ ðð Ø"ðò
ñÐñ4 !(ØOÙØØØØ+×3Ñ3ñ	
ð
Øð
àCØ#Ø"àØ#Ø#ñ ðð Ø"ðò
ñ!Ðð6 ƒGr5   r   c                   óT   • \ rS rSr\" S\" \S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  z9https://download.pytorch.org/models/vit_l_32-c7638314.pthrÝ   ré   iè[Erë   zNhttps://github.com/pytorch/vision/tree/main/references/classification#vit_l_32rì   g‘í|?5>S@g®GázDW@rí   g¨ÆK7‰Á.@gžï§ÆËE’@rî   rï   rõ   r)   Nr	  r)   r5   r6   r   r     s\   † ÙØGÙÐ.¸#Ñ>ð
Øð
à#Ø"ØfàØ#Ø"ñ ðð Ø"ðò
ñ€Mð, ƒGr5   r   c                   ó¾   • \ rS rSr\" S\" \SS\R                  S90 \	ESSSSS	S
.0SSSS.ES9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   i2  z>https://download.pytorch.org/models/vit_h_14_swag-80465313.pthé  rù   ièýÁ%)r  r  rì   gÙÎ÷S#V@g#Ûù~j¬X@rí   gÛù~j¼Å�@g¨ÆK7Iá¢@rü   rý   rõ   zAhttps://download.pytorch.org/models/vit_h_14_lc_swag-c1eb923e.pthrÝ   rþ   iè@¬%rë   gZd;ßOmU@g…ëQ¸nX@g=
×£péd@gºIkÖ¢@rÿ   r   r)   N)r*   r+   r,   r-   r   r   r   r   r  r  r  r  r  r4   r)   r5   r6   r   r   2  sÎ   † Ù$ØLÙØØØØ+×3Ñ3ñ	
ð
Øð
à#Ø"àØ#Ø#ñ ðð Ø"ðò
ñÐñ4 !(ØOÙØØØØ+×3Ñ3ñ	
ð
Øð
àCØ#Ø"àØ#Ø#ñ ðð Ø"ðò
ñ!Ðð6 %ƒGr5   r   Ú
pretrained)r×   T)r×   rØ   c                 óR   • [         R                  U 5      n [        SSSSSSU US.UD6$ )au  
Constructs a vit_b_16 architecture from
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale <https://arxiv.org/abs/2010.11929>`_.

Args:
    weights (:class:`~torchvision.models.ViT_B_16_Weights`, optional): The pretrained
        weights to use. See :class:`~torchvision.models.ViT_B_16_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.vision_transformer.VisionTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/vision_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ViT_B_16_Weights
    :members:
é   é   é   é   ©r    r�   rp   rq   r;   r×   rØ   r)   )r   Úverifyrä   ©r×   rØ   rÙ   s      r6   r   r   k  óE   € ô( ×%Ñ% gÓ.€Gäð 	ØØØØØØØñ	ð ñ	ð 	r5   c                 óR   • [         R                  U 5      n [        SSSSSSU US.UD6$ )au  
Constructs a vit_b_32 architecture from
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale <https://arxiv.org/abs/2010.11929>`_.

Args:
    weights (:class:`~torchvision.models.ViT_B_32_Weights`, optional): The pretrained
        weights to use. See :class:`~torchvision.models.ViT_B_32_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.vision_transformer.VisionTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/vision_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ViT_B_32_Weights
    :members:
r#   r  r  r  r  r)   )r   r  rä   r  s      r6   r   r   �  r  r5   c                 óR   • [         R                  U 5      n [        SSSSSSU US.UD6$ )au  
Constructs a vit_l_16 architecture from
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale <https://arxiv.org/abs/2010.11929>`_.

Args:
    weights (:class:`~torchvision.models.ViT_L_16_Weights`, optional): The pretrained
        weights to use. See :class:`~torchvision.models.ViT_L_16_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.vision_transformer.VisionTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/vision_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ViT_L_16_Weights
    :members:
r  é   é   é   r  r)   )r   r  rä   r  s      r6   r   r   ¯  óE   € ô( ×%Ñ% gÓ.€Gäð 	ØØØØØØØñ	ð ñ	ð 	r5   c                 óR   • [         R                  U 5      n [        SSSSSSU US.UD6$ )au  
Constructs a vit_l_32 architecture from
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale <https://arxiv.org/abs/2010.11929>`_.

Args:
    weights (:class:`~torchvision.models.ViT_L_32_Weights`, optional): The pretrained
        weights to use. See :class:`~torchvision.models.ViT_L_32_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.vision_transformer.VisionTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/vision_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ViT_L_32_Weights
    :members:
r#   r  r  r  r  r  r)   )r   r  rä   r  s      r6   r   r   Ñ  r  r5   )r  Nc                 óR   • [         R                  U 5      n [        SSSSSSU US.UD6$ )au  
Constructs a vit_h_14 architecture from
`An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale <https://arxiv.org/abs/2010.11929>`_.

Args:
    weights (:class:`~torchvision.models.ViT_H_14_Weights`, optional): The pretrained
        weights to use. See :class:`~torchvision.models.ViT_H_14_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.vision_transformer.VisionTransformer``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/vision_transformer.py>`_
        for more details about this class.

.. autoclass:: torchvision.models.ViT_H_14_Weights
    :members:
é   r#   r  i   i   r  r)   )r   r  rä   r  s      r6   r    r    ó  r  r5   rŸ   Úmodel_statezOrderedDict[str, torch.Tensor]Úinterpolation_modeÚreset_headsc                 óð  • US   nUR                   u  pgnUS:w  a  [        SUR                    35      eX-  S-  S-   n	X—:w  Ga3  US-  nU	S-  n	USS2SS2SS24   n
USS2SS2SS24   nUR                  SSS5      n[        [        R
                  " U5      5      nXÌ-  U:w  a  [        SXÌ-   SU 35      eUR                  SXŒU5      nX-  n[        R                  R                  UUUS	S
9nUR                  SX‰5      nUR                  SSS5      n[        R                  " X®/SS9nXòS'   U(       aC  [        5       nUR                  5        H#  u  nnUR                  S5      (       a  M  UUU'   M%     UnU$ )aw  This function helps interpolate positional embeddings during checkpoint loading,
especially when you want to apply a pre-trained model on images with different resolution.

Args:
    image_size (int): Image size of the new model.
    patch_size (int): Patch size of the new model.
    model_state (OrderedDict[str, torch.Tensor]): State dict of the pre-trained model.
    interpolation_mode (str): The algorithm used for upsampling. Default: bicubic.
    reset_heads (bool): If true, not copying the state of heads. Default: False.

Returns:
    OrderedDict[str, torch.Tensor]: A state dict which can be loaded into the new model.
zencoder.pos_embeddingr   z%Unexpected position embedding shape: r	   Nr   zPseq_length is not a perfect square! Instead got seq_length_1d * seq_length_1d = z and seq_length = T)ÚsizeÚmodeÚalign_cornersrÑ   r´   )rƒ   Ú
ValueErrorrÅ   r.   r¶   r·   rÄ   r0   Ú
functionalÚinterpolater€   rÓ   r   ÚitemsÚ
startswith)rŸ   r    r#  r$  r%  r•   rÆ   r�   rq   Únew_seq_lengthÚpos_embedding_tokenÚpos_embedding_imgÚseq_length_1dÚnew_seq_length_1dÚnew_pos_embedding_imgÚnew_pos_embeddingÚmodel_state_copyÚkÚvs                      r6   Úinterpolate_embeddingsr9    sã  € ð*  Ð 7Ñ8€MØ -× 3Ñ 3Ñ€A�:ØˆAƒvÜÐ@À×ATÑATÐ@UÐVÓWÐWà Ñ.°1Ñ4°qÑ8€Nð
 Ô#à�a‰ˆ
Ø˜!ÑˆØ+ªA¨r°¨r²1¨HÑ5ÐØ)ª!¨Q©R²¨(Ñ3Ðð .×5Ñ5°a¸¸AÓ>ÐÜœDŸIšI jÓ1Ó2ˆØÑ(¨JÓ6ÜØbÐcpñ  dAð  cCð  CUð  V`ð  Uað  bóð ð
 .×5Ñ5°a¸ÐTaÓbÐØ&Ñ4Ðô !#§¡× 9Ñ 9ØØ"Ø#Øð	 !:ð !
Ðð !6× =Ñ =¸aÀÓ \Ðð !6× =Ñ =¸aÀÀAÓ FÐÜ!ŸIšIÐ':Ð&RÐXYÑZÐà/@Ð+Ñ,æÜALÃÐØ#×)Ñ)Ö+‘��1Ø—|‘| G×,Ó,Ø*+Ð$ QÓ'ñ ,ð +ˆKàÐr5   )ÚbicubicF)9r¶   Úcollectionsr   Ú	functoolsr   Útypingr   r   r   r   r€   Útorch.nnr0   Úops.miscr
   r   Útransforms._presetsr   r   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   Ú__all__r"   r8   r2   rl   r�   r   r.   Úboolrä   rå   ÚdictÚstrr/   r  r   r   r   r   r   r  r   r   r   r   r    r9  r)   r5   r6   Ú<module>rI     sh  ðÜ Ý #Ý ß 6Ó 6ã Ý ç 0ß HÝ 'ß 6Ñ 6Ý 'ß Bò€ô9�Zô 9ô+
ˆsô +
ô\!�2—9‘9ô !ôH#9ˆb�i‰iô #9ôLQ˜Ÿ	™	ô QðhØðàðð ðð ð	ð
 ðð �kÑ"ðð ðð ðð ôðB Ð&ð €ˆd�3˜�8‰nó ðØðà8ØKòÐ ôL�{ô Lô^�{ô ô4M�{ô Mô`�{ô ô46%�{ô 6%ñr ÓÙ ,Ð0@×0NÑ0NÐ!OÑPØ6:ÈTò ˜Ð"2Ñ3ð Àdð Ð]`ð Ðevô ó Qó ðñ@ ÓÙ ,Ð0@×0NÑ0NÐ!OÑPØ6:ÈTò ˜Ð"2Ñ3ð Àdð Ð]`ð Ðevô ó Qó ðñ@ ÓÙ ,Ð0@×0NÑ0NÐ!OÑPØ6:ÈTò ˜Ð"2Ñ3ð Àdð Ð]`ð Ðevô ó Qó ðñ@ ÓÙ ,Ð0@×0NÑ0NÐ!OÑPØ6:ÈTò ˜Ð"2Ñ3ð Àdð Ð]`ð Ðevô ó Qó ðñ@ ÓÙÐ!5Ñ6Ø6:ÈTò ˜Ð"2Ñ3ð Àdð Ð]`ð Ðevô ó 7ó ððH (ØñKØðKàðKð 2ðKð ð	Kð
 ðKð &öKr5   