§
    Ÿ²ÅjO  ã                   ó¦   — U d dl mZmZmZ d dlZd dlmc mZ d dlm	Z	 d dl
mZ g Zee         ed<   ej        j         G d„ d¦  «        ¦   «         ZdS )é    )ÚDictÚListÚOptionalN)ÚTensor)Ú2_scripted_functional_optimizer_deprecation_warningÚ__all__c                   ó”   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 ddee         ded	ed
edededededededededefd„Zdeee                  fd„Z	dS )Ú_FunctionalAdagradç{®Gáz„?ç        ç      ð?ç»½×Ùß|Û=TFÚparamsÚlrÚlr_decayÚweight_decayÚinitial_accumulator_valueÚwarmup_lr_multiplierÚwarmup_num_itersÚepsÚcoalesce_gradÚforeachÚfusedÚmaximizeÚ_allow_empty_param_listc                 ó  — t          d¬¦  «         |||||||dœ| _        |	| _        |
| _        || _        || _        t          j                             t          t          j
        t          t          t          j
        f         f         i ¦  «        | _        t          |¦  «        dk    r|st          d¦  «        ‚d|i| _        | j        d         D ]9}t          j        |j        |¦  «        t          j        d¦  «        dœ| j        |<   Œ:d S )	Né   )Ú
stacklevel)r   r   r   r   r   r   r   r   z%optimizer got an empty parameter listr   r   )ÚsumÚstep)r   Údefaultsr   r   r   r   ÚtorchÚjitÚannotater   r   ÚstrÚstateÚlenÚ
ValueErrorÚparam_groupÚ	full_likeÚdataÚtensor)Úselfr   r   r   r   r   r   r   r   r   r   r   r   r   Úps                  ú[C:\Projects\Historical\venv\Lib\site-packages\torch/distributed/optim/functional_adagrad.pyÚ__init__z_FunctionalAdagrad.__init__   s  € õ  	;ÀaÐHÑHÔHÐHàØ ØØ(Ø)BØ$8Ø 0ð
ð 
ˆŒð +ˆÔØˆŒØˆŒ
Ø ˆŒÝ”Y×'Ò'­­U¬\½4ÅÅUÄ\Ð@QÔ;RÐ-RÔ(SÐUWÑXÔXˆŒ
åˆv‰;Œ;˜!ÒÐÐ$;ÐÝÐDÑEÔEÐEð % fÐ-ˆÔð Ô! (Ô+ð 	ð 	ˆAå” q¤vÐ/HÑIÔIÝœ SÑ)Ô)ðð ˆDŒJ�q‰MˆMð	ð 	ó    Ú	gradientsc                 ó\  — | j         d         }g }g }g }g }t          |¦  «        t          |¦  «        k    r6t          ddt          |¦  «        › d�z   dt          |¦  «        › �z   ¦  «        ‚d\  }}t          | j         d         |¦  «        D ]•\  }	}
|
�Ž||
j        z  }|t          j        |	¦  «        z  }|                     |	¦  «         |                     |
¦  «         | j        |	         }|                     |d         ¦  «         |                     |d         ¦  «         Œ–t          j	        ¦   «         5  t          j        ||||| j        d	         | j        d
         | j        d         | j        d         || j        | j        || j        d d ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: )FFr   r    r   r   r   r   )r   r   r   r   Úhas_sparse_gradr   r   Úhas_complexr   Ú
grad_scaleÚ	found_inf)r)   r'   r(   ÚzipÚ	is_sparser"   Ú
is_complexÚappendr&   Úno_gradÚFÚadagradr!   r   r   r   )r-   r2   r   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsr4   r5   ÚparamÚgradientr&   s               r/   r    z_FunctionalAdagrad.stepI   s  € ØÔ! (Ô+ˆØÐØˆØˆ
Ø$&ˆåˆv‰;Œ;�#˜i™.œ.Ò(Ð(ÝØWØ3¥C¨¡K¤KÐ3Ð3Ð3ñ4à7¥s¨9¡~¤~Ð7Ð7ñ8ñô ð ð (4Ñ$ˆ˜Ý" 4Ô#3°HÔ#=¸yÑIÔIð 	2ð 	2‰OˆE�8ØÐ#Ø 8Ô#5Ñ5�Ø�uÔ/°Ñ6Ô6Ñ6�Ø ×'Ò'¨Ñ.Ô.Ð.Ø—’˜XÑ&Ô&Ð&Øœ
 5Ô)�Ø×!Ò! %¨¤,Ñ/Ô/Ð/Ø×"Ò" 5¨¤=Ñ1Ô1Ð1øåŒ]‰_Œ_ð 	ð 	ÝŒIØØØØØ”= Ô&Ø!œ]¨>Ô:Øœ zÔ2Ø”M %Ô(Ø /ØœØœØ'Ø”jØØðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Ä5AF!Æ!F%Æ(F%N)r   r   r   r   r   r   r   TFFFF)
Ú__name__Ú
__module__Ú__qualname__r   r   ÚfloatÚboolr0   r   r    © r1   r/   r
   r
      sý   € € € € € ð
 ØØ!Ø+.Ø&)Ø"%ØØ"ØØØØ(-ð-ð -à�V”ð-ð ð-ð ð	-ð
 ð-ð $)ð-ð $ð-ð  ð-ð ð-ð ð-ð ð-ð ð-ð ð-ð "&ð-ð -ð -ð -ð^*˜d 8¨FÔ#3Ô4ð *ð *ð *ð *ð *ð *r1   r
   )Útypingr   r   r   r"   Útorch.optim._functionalÚoptimÚ_functionalr=   r   Ú,torch.distributed.optim._deprecation_warningr   r   r%   Ú__annotations__r#   Úscriptr
   rJ   r1   r/   ú<module>rR      sÞ   ðà 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð
 €ˆˆcŒÐ Ð Ñ ð „ÔðZð Zð Zð Zð Zñ Zô Zñ ÔðZð Zð Zr1   