§
    Ë²ÅjhQ  ã            $       óº  — d Z ddl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 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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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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S )&z)Implementation for the RMSprop algorithm.é    )ÚcastÚListÚOptionalÚUnionN)ÚTensoré   )Ú_capturable_docÚ_default_to_fused_or_foreachÚ_differentiable_docÚ_disable_dynamo_if_unsupportedÚ_foreach_docÚ!_get_capturable_supported_devicesÚ_get_scalar_dtypeÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚRMSpropÚrmspropc                   ó¦   ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 ddedeeef         d	ed
edededededee         dedefˆ fd„Z	ˆ fd„Z
d„ Zedd„¦   «         Zˆ xZS )r   ç{®Gáz„?ç®Gáz®ï?ç:Œ0âŽyE>r   FNÚparamsÚlrÚalphaÚepsÚweight_decayÚmomentumÚcenteredÚ
capturableÚforeachÚmaximizeÚdifferentiablec                 óæ  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚t	          ||||||||	|
|¬	¦
  «
        }t          ¦   «                              ||¦  «         d S )
Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid epsilon value: zInvalid momentum value: zInvalid weight_decay value: zInvalid alpha value: )
r   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%   r&   ÚdefaultsÚ	__class__s                €úDC:\Projects\Historical\venv\Lib\site-packages\torch/optim/rmsprop.pyr-   zRMSprop.__init__   s,  ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�cŠzˆzÝÐ<°sÐ<Ð<Ñ=Ô=Ð=Ø�hŠˆÝÐB¸ÐBÐBÑCÔCÐCØ�lÒ"Ð"ÝÐJ¸LÐJÐJÑKÔKÐKØ�eŠ|ˆ|ÝÐ<°UÐ<Ð<Ñ=Ô=Ð=åØØØØØØ%Ø!ØØØ)ð
ñ 
ô 
ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*Ð*Ð*ó    c                 óä  •— t          ¦   «                              |¦  «         | j        D �]D}|                     d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
<   Œµ�ŒFd S )Nr!   r   r"   Fr$   r%   r&   r#   r   Ústep©ÚdtypeÚdevice©r6   )r,   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r7   )r.   r<   ÚgroupÚpÚp_stateÚstep_valr0   s         €r1   r9   zRMSprop.__setstate__G   s{  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ØÔ&ð 	ñ 	ˆEØ×Ò˜Z¨Ñ+Ô+Ð+Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×Ò˜\¨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øñ	
ð	ð 	r2   c                 óÚ  — d}|d         D �]Þ}	|	j         €Œ|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<   |d         dk    r#t          j        |	t          j        ¬
¦  «        |
d<   |d         r#t          j        |	t          j        ¬
¦  «        |
d<   |                     |
d         ¦  «         |                     |
d	         ¦  «         |d         dk    r|                     |
d         ¦  «         |d         r|                     |
d         ¦  «         �Œà|S )NFr   z)RMSprop does not support sparse gradientsr   r#   © r5   r8   r4   )Úmemory_formatÚ
square_avgr!   Úmomentum_bufferr"   Úgrad_avg)Úgradr?   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr<   r>   Úzerosr   r7   Ú
zeros_likeÚpreserve_format)r.   rC   Úparams_with_gradÚgradsÚsquare_avgsÚmomentum_buffer_listÚ	grad_avgsÚstate_stepsÚhas_complexrD   r<   s              r1   Ú_init_groupzRMSprop._init_group\   s  € ð ˆØ�x”ð $	4ñ $	4ˆAØŒvˆ~ØØ�5Ô+¨AÑ.Ô.Ñ.ˆKØ×#Ò# AÑ&Ô&Ð&àŒvÔð PÝ"Ð#NÑOÔOÐOØ�LŠL˜œÑ Ô Ð à”J˜q”MˆEõ �5‰zŒz˜QŠˆð ˜\Ô*ðD•E”K Õ*;Ñ*=Ô*=ÀaÄhÐOÑOÔOÐOåœ RÕ/@Ñ/BÔ/BÐCÑCÔCð �f‘õ
 ',Ô&6Ø¥UÔ%:ð'ñ 'ô '��lÑ#ð ˜Ô$ qÒ(Ð(Ý/4Ô/?Ø­Ô)>ð0ñ 0ô 0�EÐ+Ñ,ð ˜Ô$ð Ý(-Ô(8Ø­Ô)>ð)ñ )ô )�E˜*Ñ%ð ×Ò˜u \Ô2Ñ3Ô3Ð3Ø×Ò˜u Vœ}Ñ-Ô-Ð-à�ZÔ  1Ò$Ð$Ø$×+Ò+¨EÐ2CÔ,DÑEÔEÐEØ�ZÔ ð 4Ø× Ò   zÔ!2Ñ3Ô3Ð3ùàÐr2   c                 óº  — |                       ¦   «          d}|�5t          j        ¦   «         5   |¦   «         }ddd¦  «         n# 1 swxY w Y   | j        D ]…}g }g }g }g }g }g }	|                      |||||||	¦  «        }
t          ||||||	|d         |d         |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&   r#   )r   r   r   r    r!   r"   r$   r%   r&   r#   r[   )Ú _cuda_graph_capture_health_checkr?   Úenable_gradr:   r\   r   )r.   ÚclosureÚlossrC   rU   rV   rW   rY   rX   rZ   r[   s              r1   r4   zRMSprop.step�   sv  € ð 	×-Ò-Ñ/Ô/Ð/àˆØÐÝÔ"Ñ$Ô$ð !ð !Ø�w‘y”y�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô&ð $	ð $	ˆEØ-/ÐØ"$ˆEØ(*ˆKØ&(ˆIØ13Ð Ø(*ˆKà×*Ò*ØØ ØØØ$ØØñô ˆKõ Ø ØØØØ$ØØ˜”;Ø˜G”nØ˜%”LØ" >Ô2Ø˜zÔ*Ø˜zÔ*Ø˜iÔ(Ø˜zÔ*Ø$Ð%5Ô6Ø  Ô.Ø'ð#ñ ô ð ð ð( ˆs   ¬AÁAÁ
A)
r   r   r   r   r   FFNFF©N)Ú__name__Ú
__module__Ú__qualname__r   r   rA   r   Úboolr   r-   r9   r\   r   r4   Ú__classcell__)r0   s   @r1   r   r      s&  ø€ € € € € ð $(ØØØØØØ Ø"&ØØ$ð'+ð '+àð'+ð �%˜�-Ô ð'+ð ð	'+ð
 ð'+ð ð'+ð ð'+ð ð'+ð ð'+ð ˜$”ð'+ð ð'+ð ð'+ð '+ð '+ð '+ð '+ð '+ðRð ð ð ð ð*1ð 1ð 1ðf "ð4ð 4ð 4ñ "Ô!ð4ð 4ð 4ð 4ð 4r2   aj  Implements RMSprop algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \alpha \text{ (alpha)}, \: \gamma \text{ (lr)},
                \: \theta_0 \text{ (params)}, \: f(\theta) \text{ (objective)}                   \\
            &\hspace{13mm}   \lambda \text{ (weight decay)},\: \mu \text{ (momentum)},
                \: centered, \: \epsilon \text{ (epsilon)}                                       \\
            &\textbf{initialize} : v_0 \leftarrow 0 \text{ (square average)}, \:
                \textbf{b}_0 \leftarrow 0 \text{ (buffer)}, \: g^{ave}_0 \leftarrow 0     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm}if \: \lambda \neq 0                                                    \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda  \theta_{t-1}                            \\
            &\hspace{5mm}v_t           \leftarrow   \alpha v_{t-1} + (1 - \alpha) g^2_t
                \hspace{8mm}                                                                     \\
            &\hspace{5mm} \tilde{v_t} \leftarrow v_t                                             \\
            &\hspace{5mm}if \: centered                                                          \\
            &\hspace{10mm} g^{ave}_t \leftarrow g^{ave}_{t-1} \alpha + (1-\alpha) g_t            \\
            &\hspace{10mm} \tilde{v_t} \leftarrow \tilde{v_t} -  \big(g^{ave}_{t} \big)^2        \\
            &\hspace{5mm}if \: \mu > 0                                                           \\
            &\hspace{10mm} \textbf{b}_t\leftarrow \mu \textbf{b}_{t-1} +
                g_t/ \big(\sqrt{\tilde{v_t}} +  \epsilon \big)                                   \\
            &\hspace{10mm} \theta_t \leftarrow \theta_{t-1} - \gamma \textbf{b}_t                \\
            &\hspace{5mm} else                                                                   \\
            &\hspace{10mm}\theta_t      \leftarrow   \theta_{t-1} -
                \gamma  g_t/ \big(\sqrt{\tilde{v_t}} + \epsilon \big)  \hspace{3mm}              \\
            &\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
    `lecture notes <https://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf>`_ by G. Hinton.
    and centered version `Generating Sequences
    With Recurrent Neural Networks <https://arxiv.org/pdf/1308.0850v5.pdf>`_.
    The implementation here takes the square root of the gradient average before
    adding epsilon (note that TensorFlow interchanges these two operations). The effective
    learning rate is thus :math:`\gamma/(\sqrt{v} + \epsilon)` where :math:`\gamma`
    is the scheduled learning rate and :math:`v` is the weighted moving average
    of the squared gradient.
    z
    Args:
        a0  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        alpha (float, optional): smoothing constant (default: 0.99)
        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)
        momentum (float, optional): momentum factor (default: 0)
        centered (bool, optional) : if ``True``, compute the centered RMSProp,
            the gradient is normalized by an estimation of its variance
        z	
        z

    r   rV   rW   rY   rX   rZ   r   r   r   r    r!   r"   r%   r&   r#   r[   c       
         óÈ  — t          | ¦  «        D �]P\  }}||         }t          j                             ¦   «         sF|rDt	          ¦   «         }|j        j        |j        j        k    r|j        j        |v sJ d|› d�¦   «         ‚||         }|s|n| }||         }|dz  }|	dk    r|                     ||	¬¦  «        }t          j        |¦  «        }|r<t          j	        |¦  «        }t          j	        |¦  «        }t          j	        |¦  «        }| 
                    |¦  «                             ||d|z
  ¬¦  «         |rb||         }|rt          j	        |¦  «        }|                     |d|z
  ¦  «         |                     ||d¬¦  «                             ¦   «         }n|                     ¦   «         }|r|                     |¦  «        }n|                     |¦  «        }|
dk    ra||         }|rt          j	        |¦  «        }| 
                    |
¦  «                             ||¦  «         |                     || ¬¦  «         �Œ7|                     ||| ¬¦  «         �ŒRd S )NúIIf capturable=True, params and state_steps must be on supported devices: ú.r   r   ©r   ©Úvalueéÿÿÿÿ)Ú	enumerater?   ÚcompilerÚis_compilingr   r7   ÚtypeÚaddrN   Úview_as_realÚmul_Úaddcmul_Úlerp_ÚaddcmulÚsqrt_ÚsqrtÚadd_Úaddcdiv_)r   rV   rW   rY   rX   rZ   r   r   r   r    r!   r"   r%   r&   r#   r[   ÚiÚparamr4   Úcapturable_supported_devicesrM   rJ   Úis_complex_paramrL   ÚavgÚbufs                             r1   Ú_single_tensor_rmsproprƒ     s�  € õ& ˜fÑ%Ô%ð 11ñ 11‰ˆˆ5Ø˜1Œ~ˆõ Œ~×*Ò*Ñ,Ô,ð 	{°ð 	{Ý+LÑ+NÔ+NÐ(à”Ô! T¤[Ô%5Ò5Ð5Ø”LÔ%Ð)EÐEÐEÐEØzÐ[wÐzÐzÐzñ FÔEðFð �QŒxˆØ#Ð.ˆtˆt¨$¨ˆØ  ”^ˆ
à�‰	ˆà˜1ÒÐØ—8’8˜E¨�8Ñ6Ô6ˆDå Ô+¨EÑ2Ô2ÐØð 	8ÝÔ& uÑ-Ô-ˆEÝÔ% dÑ+Ô+ˆDÝÔ+¨JÑ7Ô7ˆJà�Š˜ÑÔ×'Ò'¨¨d¸!¸e¹)Ð'ÑDÔDÐDàð 	$Ø  ”|ˆHØð 8Ý Ô-¨hÑ7Ô7�Ø�NŠN˜4  U¡Ñ+Ô+Ð+Ø×$Ò$ X¨x¸rÐ$ÑBÔB×HÒHÑJÔJˆCˆCà—/’/Ñ#Ô#ˆCàð 	 Ø—'’'˜#‘,”,ˆCˆCà—(’(˜3‘-”-ˆCà�aŠ<ˆ<Ø& qÔ)ˆCØð .ÝÔ(¨Ñ-Ô-�Ø�HŠH�XÑÔ×'Ò'¨¨cÑ2Ô2Ð2Ø�JŠJ�s 2 #ˆJÑ&Ô&Ð&Ñ&à�NŠN˜4 ¨R¨CˆNÑ0Ô0Ð0Ñ0ðc11ð 11r2   c       
         óä  ‡!— t          | ¦  «        dk    rd S |r
J d¦   «         ‚t          j                             ¦   «         sG|rEt	          ¦   «         Š!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                   |¦  «        }|rƒ||g}|
dk    r5t          t          t                   |¦  «        }|                     |¦  «         |r5t          t          t                   |¦  «        }|                     |¦  «         t          |g|¢R Ž  |rt          j        |¦  «        }t          j                             ¦   «         s9|d         j        r,t          j        |t          j        dd¬¦  «        d¬	¦  «         nt          j        |d
¦  «         |	dk    r1|rt          j        |||	¬	¦  «         nt          j        |||	¬	¦  «        }t          j        ||¦  «         t          j        |||d
|z
  ¬¦  «         |r{t          t          t                   |¦  «        }t          j        ||d
|z
  ¦  «         t          j        |||d¬¦  «        }t          j        |¦  «         t          j        ||¦  «         n)t          j        |¦  «        }t          j        ||¦  «         |
dk    r®t          t          t                   |¦  «        }t          j        ||
¦  «         t          j        |||¦  «         |rGt7          |t          j        ¦  «        r-t          j        || ¦  «        } t          j        || ¦  «         �Œ;t          j        ||| ¬	¦  «         �ŒU|rHt7          |t          j        ¦  «        r.t          j        || ¦  «         t          j        |||¦  «         �ŒŸt          j        |||| ¬¦  «         �Œºd S )Nr   z#_foreach ops don't support autogradc              3   ón   •K  — | ]/\  }}|j         j        |j         j        k    o|j         j        ‰v V — Œ0d S rb   )r7   rr   )Ú.0rD   r4   r   s      €r1   ú	<genexpr>z(_multi_tensor_rmsprop.<locals>.<genexpr>j  s]   øè è € ð 
ð 
ñ ��4ð ŒHŒM˜Tœ[Ô-Ò-ð >Ø””Ð!=Ð=ð
ð 
ð 
ð 
ð 
ð 
r2   ri   rj   g      ð?Úcpu)r7   rk   r   rl   rn   )r>   r?   rp   rq   r   ÚallÚzipr   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   r   r   rO   r   Ú_foreach_negÚis_cpuÚ_foreach_add_rB   Ú_foreach_addÚ_foreach_mul_Ú_foreach_addcmul_Ú_foreach_lerp_Ú_foreach_addcmulÚ_foreach_sqrt_Ú_foreach_sqrtÚ_foreach_addcdiv_r(   Ú_foreach_mulÚ_foreach_div_)"r   rV   rW   rY   rX   rZ   r   r   r   r    r!   r"   r%   r&   r#   r[   Úgrouped_tensorsÚgrouped_params_Úgrouped_grads_Úgrouped_square_avgs_Úgrouped_grad_avgs_Úgrouped_momentum_buffer_list_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_square_avgsÚgrouped_state_stepsÚstate_and_gradsÚgrouped_momentum_buffer_listÚgrouped_grad_avgsr�   Úmomentum_lrr   s"                                    @r1   Ú_multi_tensor_rmsproprª   O  s  ø€ õ& ˆ6�{„{�aÒÐØˆàÐDÐDÐDÑDÔDÐõ Œ>×&Ò&Ñ(Ô(ð w¨Zð wÝ'HÑ'JÔ'JÐ$Ýð 
ð 
ð 
ð 
õ ˜v {Ñ3Ô3ð
ñ 
ô 
ñ 
ô 
ð 	wð 	wð wÐWsÐvÐvÐvñ		wô 	wð 
õ  ÔBØ	�˜ YÐ0DÀkÐRñô €Oð ×"Ò"Ñ$Ô$ðYWñ YWñ 			ñ	
ØØØ ØØ)Ø àÝ�d¥6œl¨OÑ<Ô<ˆÝ�T¥&œ\¨>Ñ:Ô:ˆÝ"¥4­¤<Ð1EÑFÔFÐÝ"¥4­¤<Ð1EÑFÔFÐàð 
	<Ø,Ð.AÐBˆOØ˜!Š|ˆ|Ý/3Ý�”LÐ"?ñ0ô 0Ð,ð  ×&Ò&Ð'CÑDÔDÐDØð :Ý$(­­f¬Ð7IÑ$JÔ$JÐ!Ø×&Ò&Ð'8Ñ9Ô9Ð9Ý˜.Ð;¨?Ð;Ð;Ð;Ð;àð 	>Ý!Ô.¨}Ñ=Ô=ˆMõ Œ~×*Ò*Ñ,Ô,ð 	8Ð1DÀQÔ1GÔ1Nð 	8ÝÔØ#¥U¤\°#¸eÐ%DÑ%DÔ%DÈCðñ ô ð ð õ ÔÐ 3°QÑ7Ô7Ð7à˜1ÒÐàð ÝÔ# M°>ÈÐVÑVÔVÐVÐVå %Ô 2Ø! >¸ð!ñ !ô !�õ 	ÔÐ/°Ñ7Ô7Ð7ÝÔØ °ÀQÈÁYð	
ñ 	
ô 	
ð 	
ð ð 
	*Ý $¥T­&¤\Ð3EÑ FÔ FÐÝÔ Ð!2°MÀ1ÀuÁ9ÑMÔMÐMÝÔ(Ø#Ð%6Ð8IÐQSðñ ô ˆCõ Ô  Ñ%Ô%Ð%ÝÔ  SÑ)Ô)Ð)Ð)åÔ%Ð&9Ñ:Ô:ˆCÝÔ  SÑ)Ô)Ð)à�aŠ<ˆ<Ý+/Ý•V”Ð;ñ,ô ,Ð(õ ÔÐ <¸hÑGÔGÐGÝÔ#Ð$@À-ÐQTÑUÔUÐUð ð �j¨­U¬\Ñ:Ô:ð Ý#Ô0Ð1MÐPRÈsÑSÔS�ÝÔ# N°KÑ@Ô@Ð@Ñ@åÔ#Ø"Ð$@ÈÈðñ ô ð ñ ð ð W�j¨­U¬\Ñ:Ô:ð WÝÔ# C¨"¨Ñ-Ô-Ð-ÝÔ'¨¸ÀsÑKÔKÐKÑKåÔ'¨¸ÀsÐSUÐRUÐVÑVÔVÐVÑVðsYWð YWr2   )Úsingle_tensor_fnFr$   c                ó²  — t           j                             ¦   «         s(t          d„ |D ¦   «         ¦  «        st	          d¦  «        ‚|€t          | |d¬¦  «        \  }}|r-t           j                             ¦   «         rt	          d¦  «        ‚|r&t           j                             ¦   «         st          }nt          } || |||||||||||||	||
¬¦  «         dS )ztFunctional API that performs rmsprop algorithm computation.

    See :class:`~torch.optim.RMSProp` for details.
    c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rb   )r(   r?   r   )r†   Úts     r1   r‡   zrmsprop.<locals>.<genexpr>ì  s?   è è € ð 5ð 5Ø()�
�1•e”lÑ#Ô#ð5ð 5ð 5ð 5ð 5ð 5r2   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?   rp   rq   r‰   rQ   r
   ÚjitÚis_scriptingrª   rƒ   )r   rV   rW   rY   rX   rZ   r$   r%   r&   r#   r[   r   r   r   r    r!   r"   r¡   Úfuncs                      r1   r   r   Ï  s0  € õ: Œ>×&Ò&Ñ(Ô(ð 
µð 5ð 5Ø-8ð5ñ 5ô 5ñ 2ô 2ð 
õ Ø^ñ
ô 
ð 	
ð €Ý1Ø�N¨eð
ñ 
ô 
‰
ˆˆ7ð ð U•5”9×)Ò)Ñ+Ô+ð UÝÐSÑTÔTÐTàð &•u”y×-Ò-Ñ/Ô/ð &Ý$ˆˆå%ˆà€DØØØØØØØØØØ!ØØØØØ%Øð!ñ ô ð ð ð r2   )NFFFF)Ú__doc__Útypingr   r   r   r   r?   r   Ú	optimizerr	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   rA   rf   rƒ   rª   r   rH   r2   r1   ú<module>r·      s�  ðð 1Ð 0Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð" �iÐ
 €ðgð gð gð gð gˆiñ gô gð gðV+ðXà	ðð ð 
ðð ð 
ðð ð 
ðð ð 
ðð ð ñY<ð „ðBD1Ø�ŒLðD1à�Œ<ðD1ð �f”ðD1ð �FŒ|ð	D1ð
 ˜vœ,ðD1ð �f”ðD1ð 	ðD1ð ðD1ð 
ðD1ð ðD1ð ðD1ð ðD1ð ðD1ð ðD1ð  ð!D1ð" ð#D1ð D1ð D1ð D1ðN}WØ�ŒLð}Wà�Œ<ð}Wð �f”ð}Wð �FŒ|ð	}Wð
 ˜vœ,ð}Wð �f”ð}Wð 	ð}Wð ð}Wð 
ð}Wð ð}Wð ð}Wð ð}Wð ð}Wð ð}Wð  ð!}Wð" ð#}Wð }Wð }Wð }Wð@  ÐÐ1GÐHÑHÔHð #ØØ ØØðAð AØ�ŒLðAà�Œ<ðAð �f”ðAð �FŒ|ð	Að
 ˜vœ,ðAð �f”ðAð �dŒ^ðAð ðAð ðAð ðAð ðAð 	ðAð  ð!Að" 
ð#Að$ ð%Að& ð'Að( ð)Að Að Añ IÔHðAð Að Ar2   