§
    Ë²Åjõa  ã            "       ó”  — d Z ddlmZmZmZmZmZ ddlZddlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ ddgZ G d	„ de¦  «        Zd
de› de› de› de
› de› d�z   e_         dee         dee         dee         dee         de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         dee         dee         dee         dee         dedededededededededefd„Z ee¬ ¦  «        	 	 	 	 	 	 d$dee         dee         dee         dee         dee         ded"ee         dededededededededef d#„¦   «         ZdS )%z'Implementation for the RAdam algorithm.é    )ÚcastÚListÚOptionalÚTupleÚUnionN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚRAdamÚradamc                   ó´   ‡ — e Zd Z	 	 	 	 	 ddddddœded	eeef         d
eeef         dededede	e         dededefˆ fd„Z
ˆ fd„Zd„ Zedd„¦   «         Zˆ xZS )r   çü©ñÒMbP?©gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?ç:Œ0âŽyE>r   FN)ÚforeachÚmaximizeÚ
capturableÚdifferentiableÚparamsÚlrÚbetasÚepsÚweight_decayÚdecoupled_weight_decayr   r   r    r!   c                ó8  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|d         cxk    rdk     sn t          d|d         › �¦  «        ‚d|d         cxk    rdk     sn t          d	|d         › �¦  «        ‚d|k    st          d
|› �¦  «        ‚t	          |||||||	||
¬¦	  «	        }t          ¦   «                              ||¦  «         d S )Nr	   zTensor lr must be 1-elementç        zInvalid learning rate: zInvalid epsilon value: r   ç      ð?z#Invalid beta parameter at index 0: z#Invalid beta parameter at index 1: zInvalid weight_decay value: )	r#   r$   r%   r&   r   r   r    r'   r!   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__)Úselfr"   r#   r$   r%   r&   r'   r   r   r    r!   ÚdefaultsÚ	__class__s               €úBC:\Projects\Historical\venv\Lib\site-packages\torch/optim/radam.pyr0   zRAdam.__init__   se  ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�cŠzˆzÝÐ<°sÐ<Ð<Ñ=Ô=Ð=Ø�e˜A”hÐ$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$ÝÐMÀ5ÈÄ8ÐMÐMÑNÔNÐNØ�e˜A”hÐ$Ð$Ò$Ð$ Ò$Ð$Ð$Ð$ÝÐMÀ5ÈÄ8ÐMÐMÑNÔNÐNØ�lÒ"Ð"ÝÐJ¸LÐJÐJÑKÔKÐKåØØØØ%ØØØ!Ø#9Ø)ð

ñ 

ô 

ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*Ð*Ð*ó    c                 ó¸  •— t          ¦   «                              |¦  «         | j        D �].}|                     dd ¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd¦  «         |d         D ]´}| j                             |g ¦  «        }t          |¦  «        dk    r„t          j        |d	         ¦  «        sjt          |d	         ¦  «        }|d         r(t          j
        |t          ¦   «         |j        ¬
¦  «        n!t          j
        |t          ¦   «         ¬¦  «        |d	<   Œµ�Œ0d S )Nr   r   Fr!   r'   r    r"   r   Ústep©ÚdtypeÚdevice©r9   )r/   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r:   )r1   r?   ÚgroupÚpÚp_stateÚstep_valr3   s         €r4   r<   zRAdam.__setstate__G   sf  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ØÔ&ð 	ñ 	ˆEØ×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×ÒÐ5°uÑ=Ô=Ð=Ø×Ò˜\¨5Ñ1Ô1Ð1Ø˜8”_ð 
ð 
�Øœ*Ÿ.š.¨¨BÑ/Ô/�Ý�w‘<”< 1Ò$Ð$­U¬_¸WÀV¼_Ñ-MÔ-MÐ$Ý$ W¨V¤_Ñ5Ô5�Hð
 ! Ô.ðO�œØ$Õ,=Ñ,?Ô,?ÈÌðñ ô ð õ #œ\¨(Õ:KÑ:MÔ:MÐNÑNÔNð ˜F‘Oøñ	
ð	ð 	r5   c                 ó  — d}|d         D �]x}|j         ��m|t          j        |¦  «        z  }|                     |¦  «         |j         j        rt          d¦  «        ‚|                     |j         ¦  «         | j        |         }	t          |	¦  «        dk    r›|d         r(t          j        dt          ¦   «         |j
        ¬¦  «        n!t          j        dt          ¦   «         ¬	¦  «        |	d
<   t          j        |t          j        ¬¦  «        |	d<   t          j        |t          j        ¬¦  «        |	d<   |                     |	d         ¦  «         |                     |	d         ¦  «         |                     |	d
         ¦  «         �Œz|S )NFr"   z'RAdam does not support sparse gradientsr   r    © r8   r)   r;   r7   )Úmemory_formatÚexp_avgÚ
exp_avg_sq)ÚgradrB   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr?   rA   Úzerosr   r:   rE   Ú
zeros_likeÚpreserve_format)
r1   rF   Úparams_with_gradÚgradsÚexp_avgsÚexp_avg_sqsÚstate_stepsÚhas_complexrG   r?   s
             r4   Ú_init_groupzRAdam._init_group[   s†  € ð ˆØ�x”ð 	2ñ 	2ˆAØŒvÑ!Ø�uÔ/°Ñ2Ô2Ñ2�Ø ×'Ò'¨Ñ*Ô*Ð*Ø”6Ô#ð RÝ&Ð'PÑQÔQÐQØ—’˜QœVÑ$Ô$Ð$àœ
 1œ�å�u‘:”: ’?�?ð ! Ô.ðJ�œ BÕ.?Ñ.AÔ.AÈ!Ì(ÐSÑSÔSÐSå"œ\¨#Õ5FÑ5HÔ5HÐIÑIÔIð ˜&‘Mõ (-Ô'7Ø­Ô)>ð(ñ (ô (�E˜)Ñ$õ +0Ô*:Ø­Ô)>ð+ñ +ô +�E˜,Ñ'ð —’  iÔ 0Ñ1Ô1Ð1Ø×"Ò" 5¨Ô#6Ñ7Ô7Ð7Ø×"Ò" 5¨¤=Ñ1Ô1Ð1ùàÐr5   c                 óú  — |                       ¦   «          d}|�5t          j        ¦   «         5   |¦   «         }ddd¦  «         n# 1 swxY w Y   | j        D ]¥}g }g }g }g }g }t	          t
          t          t          f         |d         ¦  «        \  }	}
|                      ||||||¦  «        }t          ||||||	|
|d         |d         |d         |d         |d         |d         |d	         |d
         |¬¦  «         Œ¦|S )z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr$   r#   r&   r%   r   r   r    r!   r'   )Úbeta1Úbeta2r#   r&   r%   r   r   r    r!   r'   r\   )	Ú _cuda_graph_capture_health_checkrB   Úenable_gradr=   r   r   rD   r]   r   )r1   ÚclosureÚlossrF   rW   rX   rY   rZ   r[   r_   r`   r\   s               r4   r7   z
RAdam.step~   s~  € ð 	×-Ò-Ñ/Ô/Ð/àˆØÐÝÔ"Ñ$Ô$ð !ð !Ø�w‘y”y�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô&ð 	ð 	ˆEØ-/ÐØ"$ˆEØ%'ˆHØ(*ˆKØ(*ˆKÝ¥¥e­U lÔ 3°U¸7´^ÑDÔD‰LˆE�5à×*Ò*ØÐ'¨°¸+À{ñô ˆKõ Ø ØØØØØØØ˜”;Ø" >Ô2Ø˜%”LØ˜zÔ*Ø˜iÔ(Ø  Ô.Ø$Ð%5Ô6Ø',Ð-EÔ'FØ'ð!ñ ô ð ð ð& ˆs   ¬AÁAÁ
A)r   r   r   r   F©N)Ú__name__Ú
__module__Ú__qualname__r   r   rD   r   r   Úboolr   r0   r<   r]   r   r7   Ú__classcell__)r3   s   @r4   r   r      s.  ø€ € € € € ð $(Ø%1ØØØ',ð&+ð #'ØØ Ø$ð&+ð &+ð &+àð&+ð �%˜�-Ô ð&+ð �U˜E�\Ô"ð	&+ð
 ð&+ð ð&+ð !%ð&+ð ˜$”ð&+ð ð&+ð ð&+ð ð&+ð &+ð &+ð &+ð &+ð &+ðPð ð ð ð ð(!ð !ð !ðF "ð-ð -ð -ñ "Ô!ð-ð -ð -ð -ð -r5   a  Implements RAdam algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \beta_1, \beta_2
                \text{ (betas)}, \: \theta_0 \text{ (params)}, \:f(\theta) \text{ (objective)}, \:
                \lambda \text{ (weightdecay)}, \:\textit{maximize}                               \\
            &\hspace{13mm} \epsilon \text{ (epsilon)}, \textit{decoupled\_weight\_decay}         \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                v_0 \leftarrow 0 \text{ ( second moment)},                                       \\
            &\hspace{18mm} \rho_{\infty} \leftarrow 2/(1-\beta_2) -1                      \\[-1.ex]
            &\rule{110mm}{0.4pt}  \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{6mm}\textbf{if} \: \textit{maximize}:                                       \\
            &\hspace{12mm}g_t           \leftarrow   -\nabla_{\theta} f_t (\theta_{t-1})         \\
            &\hspace{6mm}\textbf{else}                                                           \\
            &\hspace{12mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})          \\
            &\hspace{6mm} \theta_t \leftarrow \theta_{t-1}                                       \\
            &\hspace{6mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{12mm}\textbf{if} \: \textit{decoupled\_weight\_decay}                       \\
            &\hspace{18mm} \theta_t \leftarrow \theta_{t} - \gamma \lambda \theta_{t}            \\
            &\hspace{12mm}\textbf{else}                                                          \\
            &\hspace{18mm} g_t \leftarrow g_t + \lambda \theta_{t}                               \\
            &\hspace{6mm}m_t           \leftarrow   \beta_1 m_{t-1} + (1 - \beta_1) g_t          \\
            &\hspace{6mm}v_t           \leftarrow   \beta_2 v_{t-1} + (1-\beta_2) g^2_t          \\
            &\hspace{6mm}\widehat{m_t} \leftarrow   m_t/\big(1-\beta_1^t \big)                   \\
            &\hspace{6mm}\rho_t \leftarrow \rho_{\infty} -
                2 t \beta^t_2 /\big(1-\beta_2^t \big)                                    \\[0.1.ex]
            &\hspace{6mm}\textbf{if} \: \rho_t > 5                                               \\
            &\hspace{12mm} l_t \leftarrow \frac{\sqrt{ (1-\beta^t_2) }}{ \sqrt{v_t} +\epsilon  } \\
            &\hspace{12mm} r_t \leftarrow
      \sqrt{\frac{(\rho_t-4)(\rho_t-2)\rho_{\infty}}{(\rho_{\infty}-4)(\rho_{\infty}-2) \rho_t}} \\
            &\hspace{12mm}\theta_t \leftarrow \theta_t - \gamma \widehat{m_t} r_t l_t        \\
            &\hspace{6mm}\textbf{else}                                                           \\
            &\hspace{12mm}\theta_t \leftarrow \theta_t - \gamma \widehat{m_t}                \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `On the variance of the adaptive learning rate and beyond`_.

    This implementation provides an option to use either the original weight_decay implementation as in Adam
    (where the weight_decay is applied to the gradient) or the one from AdamW (where weight_decay is applied
    to the weight) through the decoupled_weight_decay option. When decoupled_weight_decay is set to False
    (default), it uses the original Adam style weight decay, otherwise, it uses the AdamW style which
    corresponds more closely to the `author's implementation`_ in the RAdam paper. Further information
    about decoupled weight decay can be found in `Decoupled Weight Decay Regularization`_.

    z
    Args:
        aD  
        lr (float, Tensor, optional): learning rate (default: 1e-3)
        betas (Tuple[float, float], optional): coefficients used for computing
            running averages of gradient and its square (default: (0.9, 0.999))
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-8)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        decoupled_weight_decay (bool, optional): whether to use decoupled weight
            decay as in AdamW to obtain RAdamW (default: False)
        z	
        a  

    .. _On the variance of the adaptive learning rate and beyond:
        https://arxiv.org/abs/1908.03265
    .. _author's implementation:
        https://github.com/LiyuanLucasLiu/RAdam
    .. _Decoupled Weight Decay Regularization:
        https://arxiv.org/abs/1711.05101

    r"   rX   rY   rZ   r[   r_   r`   r#   r&   r%   r'   r!   r   r    r\   c       
         ó  ‡	‡‡‡‡‡— t          | ¦  «        D �]r\  }}|s||         n||          }||         }||         Š||         }t          j                             ¦   «         sF|rDt	          ¦   «         }|j        j        |j        j        k    r|j        j        |v sJ d|› d�¦   «         ‚t          j        |¦  «        rPt          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }t          j        ‰¦  «        Š|dz  }|r|nt          |¦  «        }|dk    r5|
r| 
                    d||z  z
  ¦  «         n|                     ||¬¦  «        }|                     |d|z
  ¦  «         ‰ 
                    |¦  «                             ||d|z
  ¬¦  «         d||z  z
  }d||z  z
  Š||z  }dd|z
  z  dz
  Š‰d|z  ||z  z  ‰z  z
  Šˆˆfd„}ˆˆˆ	ˆfd	„}|rLt          j        ‰d
k     |¦   «          |¦   «         z  d¦  «        }|                     ||z  |z  d¬¦  «         �Œ ‰d
k    r2|                     ||z   |¦   «         z   |¦   «         z  d¬¦  «         �ŒX|                     ||z  d¬¦  «         �Œtd S )NúIIf capturable=True, params and state_steps must be on supported devices: ú.r	   r   ©Úalpha)Úvalueé   c                  óD   •— ‰dz
  ‰dz
  z  ‰ z  ‰ dz
  ‰ dz
  z  ‰z  z  dz  S )Né   rq   ç      à?rK   )Úrho_infÚrho_ts   €€r4   Ú_compute_rectz+_single_tensor_radam.<locals>._compute_rect=  sI   ø€ à˜‘Ø˜1‘9ñàñð ˜a‘K G¨a¡KÑ0°5Ñ8ñ:ð ñð r5   c                  ó–   •— ‰                      ¦   «         } ‰r|                      ‰¦  «        } n|                      ‰¦  «        } ‰dz  | z  S )Nrt   )ÚsqrtÚaddÚadd_)Úexp_avg_sq_sqrtÚbias_correction2r!   r%   rN   s    €€€€r4   Ú_compute_adaptive_lrz2_single_tensor_radam.<locals>._compute_adaptive_lrE  sR   ø€ Ø(ŸošoÑ/Ô/ˆOØð <Ø"1×"5Ò"5°cÑ":Ô":��à"1×"6Ò"6°sÑ";Ô";�à$ cÑ)¨_Ñ<Ð<r5   ç      @r*   g      ð¿)Ú	enumeraterB   ÚcompilerÚis_compilingr   r:   ÚtyperP   Úview_as_realr   Úmul_rz   Úlerp_Úaddcmul_Úwherer{   )r"   rX   rY   rZ   r[   r_   r`   r#   r&   r%   r'   r!   r   r    r\   ÚiÚparamrO   rM   Ústep_tÚcapturable_supported_devicesr7   Úbias_correction1Úbias_corrected_exp_avgrw   r~   Úupdater}   rN   ru   rv   s            ` `               @@@@r4   Ú_single_tensor_radamr�   þ   s_  øøøøøø€ õ$ ˜fÑ%Ô%ð NDñ ND‰ˆˆ5Ø'Ð6ˆu�QŒxˆx¨e°A¬h¨YˆØ˜1”+ˆØ  ”^ˆ
Ø˜Q”ˆõ Œ~×*Ò*Ñ,Ô,ð 	{°ð 	{Ý+LÑ+NÔ+NÐ(à”Ô! V¤]Ô%7Ò7Ð7Ø”LÔ%Ð)EÐEÐEÐEØzÐ[wÐzÐzÐzñ FÔEðFõ Ô˜EÑ"Ô"ð 	8ÝÔ& uÑ-Ô-ˆEÝÔ% dÑ+Ô+ˆDÝÔ(¨Ñ1Ô1ˆGÝÔ+¨JÑ7Ô7ˆJð 	�!‰ˆØ#Ð;ˆvˆv­°FÑ);Ô);ˆà˜1ÒÐØ%ð ;Ø—
’
˜1˜r LÑ0Ñ0Ñ1Ô1Ð1Ð1à—x’x ¨\�xÑ:Ô:�ð 	�Š�d˜A ™IÑ&Ô&Ð&Ø�Š˜ÑÔ×'Ò'¨¨d¸!¸e¹)Ð'ÑDÔDÐDà˜u d™{™?ÐØ˜u d™{™?Ðð ")Ð+;Ñ!;Ðð �q˜5‘y‘/ AÑ%ˆà˜!˜d™( e¨T¡kÑ2Ð5EÑEÑEˆð	ð 	ð 	ð 	ð 	ð 	ð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð ð 	DÝ”[Ø˜’˜]˜]™_œ_Ð/CÐ/CÑ/EÔ/EÑEÀsñô ˆFð �JŠJÐ-°Ñ2°VÑ;À4ˆJÑHÔHÐHÑHà�sŠ{ˆ{Ø—
’
Ø*Øñà*Ð*Ñ,Ô,ñ-ð $�m‘o”oñ&ð ð ñ ô ð ñ ð —
’
Ð1°BÑ6¸d�
ÑCÔCÐCÑCð]NDð NDr5   c       
         óŒ  ‡‡‡‡%‡&— t          | ¦  «        dk    rd S |r
J d¦   «         ‚t          j                             ¦   «         sI|rGt	          d¬¦  «        Š%t          ˆ%fd„t          | |¦  «        D ¦   «         ¦  «        sJ d‰%› d�¦   «         ‚t          j        | ||||g¦  «        }| 	                    ¦   «         D �]‡\  \  }}}}}}t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          j                             ¦   «         s9|d         j        r,t          j        |t          j        dd	¬
¦  «        d¬¦  «         nt          j        |d¦  «         |rt!          ||||¦  «         |rt          j        |¦  «        }dd‰z
  z  dz
  Š&|r¾t          j        ‰|¦  «        }t          j        |¦  «         t          j        |d¦  «         t          j        ‰|¦  «        }t          j        ||¦  «         t          j        |d¦  «         t          j        ||¦  «         t          j        |¦  «         t          j        |‰&¦  «         |}nˆˆ&fd„|D ¦   «         }|dk    rO|
rt          j        |d‰|z  z
  ¦  «         n1|rt          j        |||¬¦  «         nt          j        |||¬¦  «        }t          j        ||d‰z
  ¦  «         t          j        |‰¦  «         t          j        |||d‰z
  ¦  «         ~|�rët          j        |d¦  «        }t          j        |d¦  «        }t          j        ||¦  «         ~t          j        |‰&¦  «         ‰&dz
  ‰&dz
  z  Š&t          j        |‰&¦  «        } t          j        || ¦  «         ~ t          j        |¦  «         d„ t          ||¦  «        D ¦   «         }!~~d„ |!D ¦   «         }"t          j        |"‰¦  «         t          j        ‰|¦  «        }t          j        |¦  «         t          j        |d¦  «         t          j        |"|¦  «         t          j        |"¦  «         t          j        ‰|¦  «        }t          j        |¦  «         t          j        |d¦  «         t          j        |¦  «         t          j        |‰¦  «         t          j        ||!¦  «         ~!t          j        |¦  «         t          j        ||¦  «         ~nbˆ&fd„|D ¦   «         }!d„ |!D ¦   «         }#ˆfd„|D ¦   «         }ˆfd„t          |#|¦  «        D ¦   «         }"ˆˆfd„t          ||!|¦  «        D ¦   «         }t          j        |¦  «        }$t          j        |$|	¦  «         t          j        |$|¦  «         t          j        |$¦  «         t          j        |$|"¦  «         t          j        |||$¦  «         �Œ‰d S )Nr   z#_foreach ops don't support autogradF)Úsupports_xlac              3   ón   •K  — | ]/\  }}|j         j        |j         j        k    o|j         j        ‰v V — Œ0d S re   )r:   rƒ   )Ú.0rG   r7   rŒ   s      €r4   ú	<genexpr>z&_multi_tensor_radam.<locals>.<genexpr>}  s]   øè è € ð 
ð 
ñ ��4ð ŒHŒM˜Tœ[Ô-Ò-ð >Ø””Ð!=Ð=ð
ð 
ð 
ð 
ð 
ð 
r5   rl   rm   r*   Úcpu)r:   rn   r	   rq   c           	      óŒ   •— g | ]@}‰d t          |¦  «        z  ‰t          |¦  «        z  z  d‰t          |¦  «        z  z
  z  z
  ‘ŒAS )rq   r	   ©r   )r”   r7   r`   ru   s     €€r4   ú
<listcomp>z'_multi_tensor_radam.<locals>.<listcomp>¸  st   ø€ ð ð ð ð ð ØÝ˜TÑ"Ô"ñ#à�J tÑ,Ô,Ñ,ñ.ð �u¥
¨4Ñ 0Ô 0Ñ0Ñ0ñ2ñ2ðð ð r5   rs   c                 óH   — g | ]\  }}t          j        |d k    |d¦  «        ‘Œ S )r   r)   ©rB   rˆ   )r”   Únrv   s      r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>ç  s;   € ð ð ð Ù5=°Q¸•”˜E CšK¨¨CÑ0Ô0ðð ð r5   c                 óB   — g | ]}t          j        |d k    dd¦  «        ‘ŒS )r   r)   r*   r›   ©r”   Úrects     r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>ì  s*   € ÐQÐQÐQÀD¥¤¨D°1ªH°c¸3Ñ ?Ô ?ÐQÐQÐQr5   c                 ó`   •— g | ]*}|d k    r |dz
  |dz
  z  ‰z  ‰dz
  ‰dz
  z  |z  z  dz  nd‘Œ+S )é   rs   rq   rt   r   rK   )r”   rv   ru   s     €r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>  s~   ø€ ð ð ð ð ð ˜1’9�9ð ˜Q‘YØ˜q‘yñ"àñð   !™¨°!©Ñ4°uÑ<ñ>ð
 ñð ð ðð ð r5   c                 ó"   — g | ]}|d k    rd nd‘ŒS )r   r*   rK   rž   s     r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>  s$   € ÐCÐCÐC°d  q¢ ˜1˜1¨cÐCÐCÐCr5   c                 ó:   •— g | ]}d ‰t          |¦  «        z  z
  ‘ŒS )r	   r˜   )r”   r7   r_   s     €r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>  s8   ø€ ð  ð  ð  Ø26��E�Z¨Ñ-Ô-Ñ-Ñ-ð ð  ð  r5   c                 ó,   •— g | ]\  }}‰|z  |z  d z  ‘ŒS )éÿÿÿÿrK   )r”   rŸ   Úbcr#   s      €r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>  s7   ø€ ð  ð  ð  Ù*2¨$°��d‘˜R‘ 2Ñ%ð ð  ð  r5   c                 ó`   •— g | ]*\  }}}d ‰t          |¦  «        z  z
  dz  ‰|z  |z  z  dz  ‘Œ+S )r	   rt   r¥   r˜   )r”   r7   rŸ   r¦   r`   r#   s       €€r4   r™   z'_multi_tensor_radam.<locals>.<listcomp>  sX   ø€ ð  ð  ð  á"�D˜$ ð �e�z¨$Ñ/Ô/Ñ/Ñ/°CÑ7¸BÀ¹IÈ¹NÑKÈbÑPð ð  ð  r5   )rA   rB   r�   r‚   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   r   r   Úis_cpuÚ_foreach_add_rE   r   Ú_foreach_negÚ_foreach_powÚ_foreach_neg_Ú_foreach_mul_Ú_foreach_div_Ú_foreach_addÚ_foreach_lerp_Ú_foreach_addcmul_Ú_foreach_subÚ_foreach_mulÚ_foreach_sqrt_Ú_foreach_sqrtÚ_foreach_reciprocal_)'r"   rX   rY   rZ   r[   r_   r`   r#   r&   r%   r'   r!   r   r    r\   Úgrouped_tensorsÚgrouped_params_Úgrouped_grads_Úgrouped_exp_avgs_Úgrouped_exp_avg_sqs_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_exp_avgsÚgrouped_exp_avg_sqsÚgrouped_state_stepsr�   r}   Ú
rho_t_listÚnumÚsub2ÚdenomrŸ   Úunrect_step_sizeÚunrectifiedÚbufferrŒ   ru   s'        ```                             @@r4   Ú_multi_tensor_radamrÎ   a  s’  øøøøø€ õ$ ˆ6�{„{�aÒÐØˆàÐDÐDÐDÑDÔDÐõ Œ>×&Ò&Ñ(Ô(ð w¨Zð wÝ'HØð(
ñ (
ô (
Ð$õ ð 
ð 
ð 
ð 
õ ˜v {Ñ3Ô3ð
ñ 
ô 
ñ 
ô 
ð 	wð 	wð wÐWsÐvÐvÐvñ		wô 	wð 
õ  ÔBØ	�˜ +¨{Ð;ñô €Oð ×"Ò"Ñ$Ô$ð[Jñ [Jñ 		ñ 	ØØØØØØÝ�d¥6œl¨OÑ<Ô<ˆÝ�T¥&œ\¨>Ñ:Ô:ˆÝ¥¥V¤Ð.?Ñ@Ô@ÐÝ"¥4­¤<Ð1EÑFÔFÐÝ"¥4­¤<Ð1EÑFÔFÐõ Œ~×*Ò*Ñ,Ô,ð 	8Ð1DÀQÔ1GÔ1Nð 	8ÝÔØ#¥U¤\°#¸eÐ%DÑ%DÔ%DÈCðñ ô ð ð õ ÔÐ 3°QÑ7Ô7Ð7àð 	ÝØ Ð/?ÐATñô ð ð ð 	>Ý!Ô.¨}Ñ=Ô=ˆMð �q˜5‘y‘/ AÑ%ˆð
 ð 	Ý$Ô1°%Ð9LÑMÔMÐÝÔÐ 0Ñ1Ô1Ð1ÝÔÐ 0°!Ñ4Ô4Ð4Ý$Ô1°%Ð9LÑMÔMÐÝÔÐ 0Ð2EÑFÔFÐFÝÔÐ 0°!Ñ4Ô4Ð4ÝÔÐ 0Ð2BÑCÔCÐCÝÔÐ 0Ñ1Ô1Ð1ÝÔÐ 0°'Ñ:Ô:Ð:Ø)ˆJˆJðð ð ð ð ð 0ðñ ô ˆJð ˜1ÒÐØ%ð ÝÔ# N°A¸¸\Ñ8IÑ4IÑJÔJÐJÐJð ð ÝÔ'Ø% ~¸\ðñ ô ð ð õ %*Ô$6Ø% ~¸\ð%ñ %ô %�Mõ
 	ÔÐ-¨}¸aÀ%¹iÑHÔHÐHåÔÐ/°Ñ7Ô7Ð7ÝÔØ °¸qÀ5¹yñ	
ô 	
ð 	
ð
 àñ >	ÝÔ$ Z°Ñ3Ô3ˆCÝÔ% j°!Ñ4Ô4ˆDÝÔ  TÑ*Ô*Ð*ØÝÔ  WÑ-Ô-Ð-Ø ‘{ w°¡{Ñ3ˆGÝÔ& z°7Ñ;Ô;ˆEÝÔ  UÑ+Ô+Ð+ØÝÔ  Ñ%Ô%Ð%ðð ÝADÀSÈ*ÑAUÔAUðñ ô ˆDð ØØQÐQÈDÐQÑQÔQÐÝÔÐ 0°"Ñ5Ô5Ð5å$Ô1°%Ð9LÑMÔMÐÝÔÐ 0Ñ1Ô1Ð1ÝÔÐ 0°!Ñ4Ô4Ð4åÔÐ 0Ð2BÑCÔCÐCÝÔÐ 0Ñ1Ô1Ð1å$Ô1°%Ð9LÑMÔMÐÝÔÐ 0Ñ1Ô1Ð1ÝÔÐ 0°!Ñ4Ô4Ð4ÝÔ Ð!1Ñ2Ô2Ð2ÝÔÐ 0°"Ñ5Ô5Ð5ÝÔÐ 0°$Ñ7Ô7Ð7ØÝÔÐ 0Ñ1Ô1Ð1ÝÔÐ 0Ð2BÑCÔCÐCØ Ð ðð ð ð ð (ðñ ô ˆDð DÐC¸dÐCÑCÔCˆKð ð  ð  ð  Ø:Mð ñ  ô  Ðð ð  ð  ð  Ý69¸+ÐGWÑ6XÔ6Xð ñ  ô  Ðð ð  ð  ð  ð  å&)Ð*=¸tÐEUÑ&VÔ&Vð ñ  ô  Ðõ
 Ô$Ð%8Ñ9Ô9ˆÝÔ˜F CÑ(Ô(Ð(ÝÔ˜FÐ$4Ñ5Ô5Ð5ÝÔ" 6Ñ*Ô*Ð*ÝÔ˜FÐ$4Ñ5Ô5Ð5õ 	Ô Ð0@À&ÑIÔIÐIÑIðw[Jð [Jr5   )Úsingle_tensor_fnFr   c                ót  — t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚|€t          | |d¬¦  «        \  }}|r-t          j                             ¦   «         rt          d¦  «        ‚|r&t          j                             ¦   «         st          }nt          } || ||||||||||
||||	¬¦  «         dS )zpFunctional API that performs RAdam algorithm computation.

    See :class:`~torch.optim.RAdam` for details.
    c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S re   )r+   rB   r   )r”   Úts     r4   r•   zradam.<locals>.<genexpr>>  s.   è è € Ð@Ð@¨q�z˜!�Uœ\Ñ*Ô*Ð@Ð@Ð@Ð@Ð@Ð@r5   zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizers)
r_   r`   r#   r&   r%   r   r'   r!   r    r\   )r¨   rS   r   rB   ÚjitÚis_scriptingrÎ   r�   )r"   rX   rY   rZ   r[   r'   r   r!   r    r\   r   r_   r`   r#   r&   r%   rÁ   Úfuncs                     r4   r   r   $  s  € õ4 Ð@Ð@°KÐ@Ñ@Ô@Ñ@Ô@ð 
ÝØ^ñ
ô 
ð 	
ð €Ý1Ø�N¨eð
ñ 
ô 
‰
ˆˆ7ð ð U•5”9×)Ò)Ñ+Ô+ð UÝÐSÑTÔTÐTàð $•u”y×-Ò-Ñ/Ô/ð $Ý"ˆˆå#ˆà€DØØØØØØØØØ!ØØØ5Ø%ØØðñ ô ð ð ð r5   )FNFFFF)Ú__doc__Útypingr   r   r   r   r   rB   r   Ú	optimizerr
   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   rD   ri   r�   rÎ   r   rK   r5   r4   ú<module>rÛ      sc  ðð /Ð .Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ �GÐ
€ðNð Nð Nð Nð NˆIñ Nô Nð Nðd2ðfà	ðð ð 
ðð ð 
ðð ð 
ðð ð 
ðð ð ñgJð „ð^`DØ�ŒLð`Dà�Œ<ð`Dð �6Œlð`Dð �f”ð	`Dð
 �f”ð`Dð ð`Dð ð`Dð 	ð`Dð ð`Dð 
ð`Dð !ð`Dð ð`Dð ð`Dð ð`Dð  ð!`Dð `Dð `Dð `DðF@JØ�ŒLð@Jà�Œ<ð@Jð �6Œlð@Jð �f”ð	@Jð
 �f”ð@Jð ð@Jð ð@Jð 	ð@Jð ð@Jð 
ð@Jð !ð@Jð ð@Jð ð@Jð ð@Jð  ð!@Jð @Jð @Jð @JðF  ÐÐ1EÐFÑFÔFð $)Ø"Ø ØØØð;ð ;Ø�ŒLð;à�Œ<ð;ð �6Œlð;ð �f”ð	;ð
 �f”ð;ð !ð;ð �dŒ^ð;ð ð;ð ð;ð ð;ð ð;ð ð;ð  ð!;ð" 	ð#;ð$ ð%;ð& 
ð';ð ;ð ;ñ GÔFð;ð ;ð ;r5   