§
    Ÿ²Åj|  ã                   óª   — U d dl mZ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ÚOptionalÚTupleN)ÚTensor)Ú2_scripted_functional_optimizer_deprecation_warningÚ__all__c                   ó�   — e Zd Z	 	 	 	 	 	 ddee         dedeeef         deeef         d	ed
edefd„Zdee	e                  fd„Z
dS )Ú_FunctionalRpropç{®Gáz„?©g      à?g333333ó?©g�íµ ÷Æ°>é2   FÚparamsÚlrÚetasÚ
step_sizesÚforeachÚmaximizeÚ_allow_empty_param_listc                 óz  — t          d¬¦  «         d|i| _        || _        || _        || _        || _        t          |¦  «        dk    r|st          d¦  «        ‚d|i| _        t          j
                             t          t          j        t          t          t          j        f         f         i ¦  «        | _        d S )Né   )Ú
stacklevelr   r   z%optimizer got an empty parameter listr   )r   Údefaultsr   r   r   r   ÚlenÚ
ValueErrorÚparam_groupÚtorchÚjitÚannotater   r   ÚstrÚstate)Úselfr   r   r   r   r   r   r   s           úYC:\Projects\Historical\venv\Lib\site-packages\torch/distributed/optim/functional_rprop.pyÚ__init__z_FunctionalRprop.__init__   s¬   € õ 	;ÀaÐHÑHÔHÐHà�"ð
ˆŒð ˆŒ	Ø$ˆŒØˆŒØ ˆŒåˆv‰;Œ;˜!ÒÐÐ$;ÐÝÐDÑEÔEÐEð % fÐ-ˆÔå”Y×'Ò'­­U¬\½4ÅÅUÄ\Ð@QÔ;RÐ-RÔ(SÐUWÑXÔXˆŒ
ˆ
ˆ
ó    Ú	gradientsc                 ó*  — | j         d         }g }g }g }g }g }| j        d         }| j        \  }	}
| j        \  }}t	          |¦  «        t	          |¦  «        k    r6t          ddt	          |¦  «        › d�z   dt	          |¦  «        › �z   ¦  «        ‚d}t          ||¦  «        D �]\  }}|��|t          j        |¦  «        z  }| 	                    |¦  «         | 	                    |¦  «         || j
        vrii | j
        |<   | j
        |         }t          j        d¦  «        |d	<   t          j        |t          j        ¬
¦  «        |d<   t          j        ||¦  «        |d<   | j
        |         }| 	                    |d         ¦  «         | 	                    |d         ¦  «         | 	                    |d	         ¦  «         �Œt          j        ¦   «         5  t!          j        ||||||||	|
| j        | j        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fg        Ústep)Úmemory_formatÚprevÚ	step_size)Ústep_size_minÚstep_size_maxÚetaminusÚetaplusr   r   Úhas_complex)r   r   r   r   r   r   Úzipr   Ú
is_complexÚappendr"   ÚtensorÚ
zeros_likeÚpreserve_formatÚ	full_likeÚno_gradÚFÚrpropr   r   )r#   r'   r   Úparams_with_gradÚgradsÚprevsr   Ústate_stepsr   r/   r0   r-   r.   r1   ÚparamÚgradientr"   s                    r$   r)   z_FunctionalRprop.step6   s…  € ØÔ! (Ô+ˆØÐØˆØˆØˆ
ØˆØŒ]˜4Ô ˆØ œIÑˆ�'Ø'+¤Ñ$ˆ�}åˆv‰;Œ;�#˜i™.œ.Ò(Ð(ÝØWØ3¥C¨¡K¤KÐ3Ð3Ð3ñ4à7¥s¨9¡~¤~Ð7Ð7ñ8ñô ð ð ˆÝ" 6¨9Ñ5Ô5ð 	2ñ 	2‰OˆE�8ØÑ#Ø�uÔ/°Ñ6Ô6Ñ6�Ø ×'Ò'¨Ñ.Ô.Ð.Ø—’˜XÑ&Ô&Ð&à ¤
Ð*Ð*Ø(*�D”J˜uÑ%Ø œJ uÔ-�EÝ$)¤L°Ñ$5Ô$5�E˜&‘MÝ$)Ô$4Ø­UÔ-Bð%ñ %ô %�E˜&‘Mõ */¬¸À2Ñ)FÔ)F�E˜+Ñ&àœ
 5Ô)�Ø—’˜U 6œ]Ñ+Ô+Ð+Ø×!Ò! %¨Ô"4Ñ5Ô5Ð5Ø×"Ò" 5¨¤=Ñ1Ô1Ð1ùåŒ]‰_Œ_ð 	ð 	ÝŒGØ ØØØØØ+Ø+Ø!ØØœØœØ'ðñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Ç+HÈHÈHN)r   r   r   FFF)Ú__name__Ú
__module__Ú__qualname__r   r   Úfloatr   Úboolr%   r   r)   © r&   r$   r   r      sÌ   € € € € € ð
 Ø$.Ø*4ØØØ(-ðYð Yà�V”ðYð ðYð �E˜5�LÔ!ð	Yð
 ˜% ˜,Ô'ðYð ðYð ðYð "&ðYð Yð Yð Yð85˜d 8¨FÔ#3Ô4ð 5ð 5ð 5ð 5ð 5ð 5r&   r   )Útypingr   r   r   r   r   Útorch.optim._functionalÚoptimÚ_functionalr:   r   Ú,torch.distributed.optim._deprecation_warningr   r	   r!   Ú__annotations__r   Úscriptr   rG   r&   r$   ú<module>rO      sä   ðà .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð
 €ˆˆcŒÐ Ð Ñ ð „ÔðRð Rð Rð Rð Rñ Rô Rñ ÔðRð Rð Rr&   