Ë
    ùÿæiah  ã            (       óN  — d Z ddl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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ded d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ded d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d$edz  dedededededededededed df&d%„«       Zy)'z'Implementation for the NAdam algorithm.é    )ÚcastN)Ú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Ú_stack_if_compilingÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚNAdamÚnadamc                   ó¢   ‡ — e Zd Z	 	 	 	 	 	 ddddddœdedeez  deeef   deded	ed
ededz  dedededdfˆ fd„Zˆ fd„Z	d„ Z
edd„«       Zˆ xZS )r   FN)ÚforeachÚmaximizeÚ
capturableÚdifferentiableÚparamsÚlrÚbetasÚepsÚweight_decayÚmomentum_decayÚdecoupled_weight_decayr   r   r   r   Úreturnc                ó¸  •— t        |t        «      r|j                  «       dk7  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
|› �«      ‚d|k  st        d|› �«      ‚|||||||	||
|dœ
}t        ‰| �  ||«       y )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: zInvalid momentum_decay value: )
r   r   r    r!   r"   r#   r   r   r   r   )Ú
isinstancer   ÚnumelÚ
ValueErrorÚsuperÚ__init__)Úselfr   r   r   r    r!   r"   r#   r   r   r   r   ÚdefaultsÚ	__class__s                €úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/optim/nadam.pyr,   zNAdam.__init__!   s  ø€ ô �bœ&Ô! b§h¡h£j°A¢oÜÐ:Ó;Ð;Ø�bŠyÜÐ6°r°dÐ;Ó<Ð<Ø�cŠzÜÐ6°s°eÐ<Ó=Ð=Ø�e˜A‘hÔ$ Ô$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�e˜A‘hÔ$ Ô$ÜÐBÀ5ÈÁ8À*ÐMÓNÐNØ�lÒ"ÜÐ;¸L¸>ÐJÓKÐKØ�nÒ$ÜÐ=¸nÐ=MÐNÓOÐOàØØØ(Ø,Ø&<Ø ØØ$Ø,ñ
ˆô 	‰Ñ˜ Õ*ó    c                 ó8  •— t         ‰| �  |«       | j                  D �]z  }|j                  dd«       |j                  dd «       |j                  dd«       |j                  dd«       |j                  dd«       |d   D �]  }| j                  j                  |g «      }t        |«      dk7  sŒ/t        j                  |d	   «      s_t        |d	   «      }|d   r*t        j                  |t        «       |j                  ¬
«      nt        j                  |t        «       ¬«      |d	<   t        j                  |d   «      rŒ¿|d   }|d   r*t        j                  |t        «       |j                  ¬
«      nt        j                  |t        «       ¬«      |d<   �Œ �Œ} y )Nr   Fr   r   r   r#   r   r   Ústep©ÚdtypeÚdevice©r5   Ú
mu_product)r+   Ú__setstate__Úparam_groupsÚ
setdefaultÚstateÚgetÚlenÚtorchÚ	is_tensorÚfloatÚtensorr   r6   )r-   r<   ÚgroupÚpÚp_stateÚstep_valÚmu_prod_valr/   s          €r0   r9   zNAdam.__setstate__L   sd  ø€ Ü‰Ñ˜UÔ#Ø×&Õ&ˆEØ×Ñ˜Z¨Ô/Ø×Ñ˜Y¨Ô-Ø×Ñ˜\¨5Ô1Ø×ÑÐ-¨uÔ5Ø×ÑÐ5°uÔ=Ø˜8•_�ØŸ*™*Ÿ.™.¨¨BÓ/�Ü�w“< 1Ó$Ü Ÿ?™?¨7°6©?Ô;Ü#(¨°©Ó#9˜ð
  % \Ò2ô "ŸL™LØ (Ô0AÓ0CÈAÏHÉHõô "'§¡¨hÔ>OÓ>QÔ!Rð   ™ô !Ÿ?™?¨7°<Ñ+@ÕAØ&-¨lÑ&;˜ð
  % \Ò2ô "ŸL™LØ +Ô3DÓ3FÈqÏxÉxõô "'§¡¨kÔARÓATÔ!Uð   Ó-ò %ñ 'r1   c                 óÄ  — d}|d   D �]Ô  }	|	j                   €Œ|t        j                  |	«      z  }|j                  |	«       |	j                   j                  rt        d«      ‚|j                  |	j                   «       | j                  |	   }
t        |
«      dk(  rò|d   r*t        j                  dt        «       |	j                  ¬«      nt        j                  dt        «       ¬	«      |
d
<   |d   r*t        j                  dt        «       |	j                  ¬«      nt        j                  dt        «       ¬	«      |
d<   t        j                  |	t        j                  ¬«      |
d<   t        j                  |	t        j                  ¬«      |
d<   |j                  |
d   «       |j                  |
d   «       |j                  |
d   «       |j                  |
d
   «       �Œ× |S )NFr   z'NAdam does not support sparse gradientsr   r   © r4   r&   r7   r3   r'   r8   )Úmemory_formatÚexp_avgÚ
exp_avg_sq)Úgradr?   Ú
is_complexÚappendÚ	is_sparseÚRuntimeErrorr<   r>   Úzerosr   r6   rB   ÚonesÚ
zeros_likeÚpreserve_format)r-   rC   Úparams_with_gradÚgradsÚexp_avgsÚexp_avg_sqsÚmu_productsÚstate_stepsÚhas_complexrD   r<   s              r0   Ú_init_groupzNAdam._init_groupj   s�  € ð ˆØ�x•ˆAØ�v‰vÑ!Øœu×/Ñ/°Ó2Ñ2�Ø ×'Ñ'¨Ô*Ø—6‘6×#Ò#Ü&Ð'PÓQÐQØ—‘˜QŸV™VÔ$àŸ
™
 1™�ä�u“: ’?ð ! Ò.ô Ÿ™ BÔ.?Ó.AÈ!Ï(É(ÕSä"Ÿ\™\¨#Ô5FÓ5HÔIð ˜&‘Mð ! Ò.ô Ÿ
™
 2Ô->Ó-@ÈÏÉÕRä"Ÿ\™\¨#Ô5FÓ5HÔIð ˜,Ñ'ô (-×'7Ñ'7Ø¬×)>Ñ)>ô(�E˜)Ñ$ô +0×*:Ñ*:Ø¬×)>Ñ)>ô+�E˜,Ñ'ð —‘  iÑ 0Ô1Ø×"Ñ" 5¨Ñ#6Ô7Ø×"Ñ" 5¨Ñ#6Ô7Ø×"Ñ" 5¨¡=Ö1ðI !ðJ Ðr1   c                 ó¬  — | j                  «        d}|�$t        j                  «       5   |«       }ddd«       | j                  D ]€  }g }g }g }g }g }g }	t	        t
        t        t        f   |d   «      \  }
}| j                  |||||||	«      }t        ||||||	|
||d   |d   |d   |d   |d   |d   |d	   |d
   |d   |¬«       Œ‚ |S # 1 sw Y   ŒšxY w)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   )Úbeta1Úbeta2r   r!   r"   r    r   r#   r   r   r   r\   )	Ú'_accelerator_graph_capture_health_checkr?   Úenable_gradr:   r   ÚtuplerA   r]   r   )r-   ÚclosureÚlossrC   rV   rW   rX   rY   rZ   r[   r_   r`   r\   s                r0   r3   z
NAdam.stepœ   s&  € ð 	×4Ñ4Ô6àˆØÐÜ×"Ñ"Õ$Ù“y�÷ %ð ×&Ô&ˆEØ-/ÐØ"$ˆEØ%'ˆHØ(*ˆKØ(*ˆKØ(*ˆKÜ¤¤e¬U lÑ 3°U¸7±^ÓD‰LˆE�5à×*Ñ*ØØ ØØØØØóˆKô Ø ØØØØØØØØ˜‘;Ø" >Ñ2Ø$Ð%5Ñ6Ø˜%‘LØ˜zÑ*Ø',Ð-EÑ'FØ˜iÑ(Ø  Ñ.Ø$Ð%5Ñ6Ø'ö%ð' 'ðP ˆ÷W %Ð$ús   ©C
Ã
C)gü©ñÒMb`?)gÍÌÌÌÌÌì?g+‡ÙÎ÷ï?g:Œ0âŽyE>r   gü©ñÒMbp?F©N)Ú__name__Ú
__module__Ú__qualname__r   rA   r   rc   Úboolr,   r9   r]   r   r3   Ú__classcell__)r/   s   @r0   r   r       sÖ   ø„ ð "Ø%1ØØØ $Ø',ð)+ð  $ØØ Ø$ò)+àð)+ð �F‰Nð)+ð �U˜E�\Ñ"ð	)+ð
 ð)+ð ð)+ð ð)+ð !%ð)+ð ˜‘ð)+ð ð)+ð ð)+ð ð)+ð 
õ)+ôVò<0ðd "ò6ó "ô6r1   a¼  Implements NAdam algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma_t \text{ (lr)}, \: \beta_1,\beta_2 \text{ (betas)},
                \: \theta_0 \text{ (params)}, \: f(\theta) \text{ (objective)}                   \\
            &\hspace{13mm} \: \lambda \text{ (weight decay)}, \:\psi \text{ (momentum decay)}    \\
            &\hspace{13mm} \: \textit{decoupled\_weight\_decay}, \:\textit{maximize}             \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                v_0 \leftarrow 0 \text{ ( second moment)}                                 \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}\textbf{if} \: \textit{maximize}:                                       \\
            &\hspace{10mm}g_t           \leftarrow   -\nabla_{\theta} f_t (\theta_{t-1})         \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})          \\
            &\hspace{5mm} \theta_t \leftarrow \theta_{t-1}                                       \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm}\textbf{if} \: \textit{decoupled\_weight\_decay}                       \\
            &\hspace{15mm} \theta_t \leftarrow \theta_{t-1} - \gamma \lambda \theta_{t-1}                    \\
            &\hspace{10mm}\textbf{else}                                                          \\
            &\hspace{15mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm} \mu_t \leftarrow \beta_1 \big(1 - \frac{1}{2}  0.96^{t \psi} \big)     \\
            &\hspace{5mm} \mu_{t+1} \leftarrow \beta_1 \big(1 - \frac{1}{2} 0.96^{(t+1)\psi}\big)\\
            &\hspace{5mm}m_t           \leftarrow   \beta_1 m_{t-1} + (1 - \beta_1) g_t          \\
            &\hspace{5mm}v_t           \leftarrow   \beta_2 v_{t-1} + (1-\beta_2) g^2_t          \\
            &\hspace{5mm}\widehat{m_t} \leftarrow \mu_{t+1} m_t/(1-\prod_{i=1}^{t+1}\mu_i)\\[-1.ex]
            & \hspace{11mm} + (1-\mu_t) g_t /(1-\prod_{i=1}^{t} \mu_{i})                         \\
            &\hspace{5mm}\widehat{v_t} \leftarrow   v_t/\big(1-\beta_2^t \big)                   \\
            &\hspace{5mm}\theta_t \leftarrow \theta_t - \gamma \widehat{m_t}/
                \big(\sqrt{\widehat{v_t}} + \epsilon \big)                                       \\
            &\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 `Incorporating Nesterov Momentum into Adam`_.
    z
    Args:
        aø  
        lr (float, Tensor, optional): learning rate (default: 2e-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)
        momentum_decay (float, optional): momentum momentum_decay (default: 4e-3)
        decoupled_weight_decay (bool, optional): whether to decouple the weight
            decay as in AdamW to obtain NAdamW. If True, the algorithm does not
            accumulate weight decay in the momentum nor variance. (default: False)
        z	
        zÏ

    .. _Incorporating Nesterov Momentum into Adam:
        https://openreview.net/forum?id=OM0jvwB8jIp57ZJjtNEZ
    .. _Decoupled Weight Decay Regularization:
        https://arxiv.org/abs/1711.05101

    r   rW   rX   rY   rZ   r[   r_   r`   r   r!   r"   r    r#   r   r   r   r\   r$   c                ó  — t         j                  j                  «       st        |«      }t	        | «      D �]Ô  \  }}|s||   n||    }||   }||   }||   }||   }t        j
                  |«      rTt        j                  |«      }t        j                  |«      }t        j                  |«      }t        j                  |«      }t         j                  j                  «       s}|r{t        «       }|j                  j                  |j                  j                  cxk(  r|j                  j                  k(  rn n|j                  j                  |v st        d|› d�«      ‚|dz  }|r|}nt        |«      }d||z  z
  }|	dk7  r-|r|j                  d||	z  z
  «       n|j                  ||	¬«      }|ddd||
z  z  z  z
  z  }|ddd|dz   |
z  z  z  z
  z  }||z  }|j!                  |d|z
  «       |j                  |«      j#                  ||d|z
  ¬	«       |j%                  |«      j'                  «       }|s|r]|j                  |«      }||z  }|| d|z
  z  d|z
  z  z  }|| |z  d|z
  z  z  }|j)                  ||«       |j)                  ||«       �Œ`t        |«      |z  }|j+                  |«       |j)                  ||| d|z
  z  dt        |«      z
  z  ¬	«       |j)                  ||t-        t.        | |z  d|z
  z  «      ¬	«       �Œ× y )
NzVIf capturable=True, params, mu_products and state_steps must be on supported devices: Ú.r   r   ©Úalphar'   ç      à?ç¸…ëQ¸î?)Úvalue)r?   ÚjitÚis_scriptingr   Ú	enumeraterN   Úview_as_realÚcompilerÚis_compilingr   r6   ÚtypeÚAssertionErrorr   Úmul_ÚaddÚlerp_Úaddcmul_ÚdivÚsqrtÚaddcdiv_Úadd_r   rA   )r   rW   rX   rY   rZ   r[   r_   r`   r   r!   r"   r    r#   r   r   r   r\   ÚiÚparamrM   rK   rL   r8   Ústep_tÚcapturable_supported_devicesr3   Úbias_correction2ÚmuÚmu_nextÚdenomÚmu_product_nexts                                  r0   Ú_single_tensor_nadamrŒ     s  € ô( �9‰9×!Ñ!Ô#Ü˜‹^ˆä˜f×%‰ˆˆ5Ù'ˆu�QŠx¨e°A©h¨YˆØ˜1‘+ˆØ  ‘^ˆ
Ø  ‘^ˆ
Ø˜Q‘ˆä×Ñ˜EÔ"Ü×&Ñ& uÓ-ˆEÜ×%Ñ% dÓ+ˆDÜ×(Ñ(¨Ó1ˆGÜ×+Ñ+¨JÓ7ˆJô �~‰~×*Ñ*Ô,±Ü+LÓ+NÐ(à—‘×!Ñ! Z×%6Ñ%6×%;Ñ%;ÔQ¸v¿}¹}×?QÑ?QÕQØ—L‘L×%Ñ%Ð)EÑEä$ð-Ø-IÐ,JÈ!ðMóð ð 	�!‰ˆáØ‰Dä˜fÓ%ˆDà˜u d™{™?Ðà˜1ÒÙ%à—
‘
˜1˜r LÑ0Ñ0Õ1à—x‘x ¨\�xÓ:�ð �c˜C 4¨D°>Ñ,AÑ#BÑCÑCÑDˆØ˜3 ¨°$¸±(¸nÑ1LÑ(MÑ!NÑNÑOˆð 	�bÑˆ
ð 	�‰�d˜A ™IÔ&Ø�‰˜Ó×'Ñ'¨¨d¸!¸e¹)Ð'ÔDØ—‘Ð/Ó0×5Ñ5Ó7ˆá™ZØ—I‘I˜c“NˆEð )¨7Ñ2ˆOØ˜B˜3 #¨¡(Ñ+¨s°ZÑ/?Ñ@ÑAˆDØ "  w¡°#¸Ñ2GÑ!HÑIˆGØ�N‰N˜4 Ô'Ø�N‰N˜7 EÖ*ä(¨Ó4°wÑ>ˆOØ�J‰J�sŒOØ�N‰NØ�e R C¨3°©8Ñ$4¸¼jÈÓ>TÑ8TÑ$Uð ô ð �N‰NØØÜœ5 B 3¨¡=°S¸?Ñ5JÑ"KÓLð ö ñM &r1   c                óø  ‡,— t        | «      dk(  ry |rt        d«      ‚t        j                  j	                  «       s>|r<t        d¬«      Š,t        ˆ,fd„t        | ||d¬«      D «       «      st        d‰,› d	�«      ‚t        |«      }t        j                  | |||||g«      }|j                  «       D �]¬  \  \  }}}}}}}t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }t        t        t           |«      }|rt        ||||«       |rt        j                   |«      }t        j                  j	                  «       s=|d   j"                  r.t        j$                  |t        j&                  d
d¬«      d
¬«       nt        j$                  |d«       |	dk7  rR|rt        j(                  |d||	z  z
  «       n3|rt        j$                  |||	¬«       nt        j*                  |||	¬«      }t        j,                  ||d|z
  «       t        j(                  ||«       t        j.                  |||d|z
  «       t        j0                  |«      }|�r4t        j2                  ||
«      } t        j4                  d| «      }!t        j(                  |!d«       t        j$                  |!d
«       t        j(                  |!|«       t        j$                  | |
«       t        j4                  d| «      }"t        j(                  |"d«       t        j$                  |"d
«       t        j(                  |"|«       ~ t        j4                  ||«      }#t        j6                  |#d
«       t        j8                  |#«       t        j:                  |#«       nr|D �$cg c]  }$d|t=        |$«      z  z
  dz  ‘Œ }#}$|D �$cg c]  }$|d
ddt=        |$«      |
z  z  z  z
  z  ‘Œ }!}$|D �$cg c]  }$|d
ddt=        |$«      dz   |
z  z  z  z
  z  ‘Œ! }"}$t        j(                  ||!«       t        j>                  ||#«       t        j$                  ||«       ~#|�rt        j6                  |!d
«       t        j(                  |!|«       t        j@                  |d
«      }%t        j8                  |%«       t        j>                  |!|%«       |!}&~%t        j2                  ||"«      }%t        j(                  |"|«       t        j6                  |%d
«       t        j>                  |"|%«       |"}'~%t        j2                  |&|«      }(t        j.                  |(|'|«       t        jB                  ||(|«       �ŒçtE        t        ||!d¬«      D �)�*cg c](  \  })}*t=        |«      d
|*z
  z  d
t=        |)«      z
  z  dz  ‘Œ* c}*})«      }&tE        t        ||"d¬«      D �)�+cg c](  \  })}+t=        |«      |+z  d
t=        |)«      |+z  z
  z  dz  ‘Œ* c}+})«      }'t        jB                  ||||&«       t        jB                  ||||'«       �Œ¯ y c c}$w c c}$w c c}$w c c}*})w c c}+})w )Nr   z#_foreach ops don't support autogradF)Úsupports_xlac              3   óò   •K  — | ]n  \  }}}|j                   j                  |j                   j                  cxk(  xr |j                   j                  k(  nc xr |j                   j                  ‰v –— Œp y ­wrf   )r6   ry   )Ú.0rD   Úmpr3   r†   s       €r0   Ú	<genexpr>z&_multi_tensor_nadam.<locals>.<genexpr>œ  sa   øè ø€ ð 
ñ  R‘��2�tð �H‰H�M‰M˜RŸY™YŸ^™^Ö?¨t¯{©{×/?Ñ/?Ô?ò >Ø—‘—‘Ð!=Ð=ó>áQùs   ƒA4A7T)ÚstrictzWIf capturable=True, params, mu_products, and state_steps must be on supported devices: rm   r'   Úcpu)r6   rn   r   rq   g      à¿rp   éÿÿÿÿ)#r>   rz   r?   rw   rx   r   ÚallÚzipr   r   Ú"_group_tensors_by_device_and_dtypeÚvaluesr   Úlistr   r   Ú_foreach_negÚis_cpuÚ_foreach_add_rB   Ú_foreach_mul_Ú_foreach_addÚ_foreach_lerp_Ú_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mulÚ_foreach_powÚ_foreach_sub_Ú_foreach_neg_Ú_foreach_sqrt_r   Ú_foreach_div_Ú_foreach_subÚ_foreach_addcdiv_r   )-r   rW   rX   rY   rZ   r[   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_mu_products_Úgrouped_state_steps_Ú_Úgrouped_paramsÚgrouped_gradsÚgrouped_exp_avgsÚgrouped_exp_avg_sqsÚgrouped_mu_productsÚgrouped_state_stepsÚexp_avg_sq_sqrtÚexponentÚmusÚmu_nextsÚbias_correction_sqrtr3   rŠ   Ústep_size_gradsÚstep_size_expavgÚ	numeratorr8   rˆ   r‰   r†   s-                                               @r0   Ú_multi_tensor_nadamrÁ   }  so  ø€ ô( ˆ6ƒ{�aÒØáÜÐBÓCÐCô �>‰>×&Ñ&Ô(©ZÜ'HØô(
Ð$ô ó 
ô  # 6¨;¸ÈDÕQó
ô 
ô
 !ðVà/Ð0°ð3óð ô 
�B‹€Bä×BÑBØ	�˜ +¨{¸KÐHó€Oð ×"Ñ"×$ñ		ñ 	ØØØØØØØÜœd¤6™l¨OÓ<ˆÜœT¤&™\¨>Ó:ˆÜ¤¤V¡Ð.?Ó@ÐÜ"¤4¬¡<Ð1EÓFÐÜ"¤4¬¡<Ð1EÓFÐÜ"¤4¬¡<Ð1EÓFÐñ ÜØ Ð/?ÐATôñ Ü!×.Ñ.¨}Ó=ˆMô �~‰~×*Ñ*Ô,Ð1DÀQÑ1G×1NÒ1NÜ×ÑØ#¤U§\¡\°#¸eÔ%DÈCöô ×ÑÐ 3°QÔ7à˜1ÒÙ%ä×#Ñ# N°A¸¸\Ñ8IÑ4IÕJñ Ü×'Ñ'Ø% ~¸\öô %*×$6Ñ$6Ø% ~¸\ô%�Mô
 	×ÑÐ-¨}¸aÀ%¹iÔHä×ÑÐ/°Ô7Ü×ÑØ °¸qÀ5¹yô	
ô  ×-Ñ-Ð.AÓBˆò
 ä×)Ñ)Ð*=¸~ÓNˆHÜ×$Ñ$ T¨8Ó4ˆCÜ×Ñ  TÔ*Ü×Ñ  SÔ)Ü×Ñ  UÔ+ô ×Ñ ¨.Ô9Ü×)Ñ)¨$°Ó9ˆHÜ×Ñ ¨$Ô/Ü×Ñ ¨#Ô.Ü×Ñ ¨%Ô0ð ä#(×#5Ñ#5°eÐ=PÓ#QÐ ä×ÑÐ 4°cÔ:Ü×ÑÐ 4Ô5Ü× Ñ Ð!5Õ6ñ DWó$ÙCV¸4��Uœj¨Ó.Ñ.Ñ.°3Ó6ÐCVð !ð $ñ
 0óá/�Dð ˜˜s d¬z¸$Ó/?À.Ñ/PÑ&QÑRÑRÓSØ/ð ð ñ 0óñ 0�Dð Ø˜ ¬*°TÓ*:¸QÑ*>À.Ñ)PÑ QÑRÑRóTà/ð ð ô 	×ÑÐ/°Ô5ä×Ñ˜OÐ-AÔBÜ×Ñ˜O¨SÔ1ð !âä×Ñ  SÔ)Ü×Ñ  RÔ(ä×&Ñ&Ð':¸CÓ@ˆEÜ×Ñ Ô&Ü×Ñ  UÔ+à!ˆOàô ×&Ñ&Ð':¸HÓEˆEÜ×Ñ ¨"Ô-ô ×Ñ  sÔ+Ü×Ñ ¨%Ô0à'Ðàô ×*Ñ*¨?¸MÓJˆIÜ×#Ñ# IÐ/?ÐAQÔRô ×#Ñ# N°I¸ÖOä1ô +.Ð.AÀ3ÈtÕ*Tôá*T™˜
 Bô   “^ s¨R¡xÑ0°C¼*ÀZÓ:PÑ4PÑQÐUWÓWØ*TòóˆOô  3ô 03Ø+¨X¸dõ0ô
ñ0Ñ+˜
 Gô # 2›Ø!ñ"à¤¨JÓ!7¸'Ñ!AÑAñCð óð0ò
ó Ðô ×#Ñ#ØØØØô	ô ×#Ñ#ØØ ØØ ö	ñC %ùò`$ùòùòùóbùó
s   ÏY!Ï3!Y&Ð$Y+Ö--Y0×8-Y6)Úsingle_tensor_fnr   c                ó€  — t        d„ |D «       «      st        d«      ‚t        d„ |D «       «      st        d«      ‚|€t        | |	d¬«      \  }}|r)t        j                  j                  «       rt        d«      ‚|r%t        j                  j                  «       st        }nt        } || |||||||||||||||	|
¬	«       y)
zpFunctional API that performs NAdam algorithm computation.

    See :class:`~torch.optim.NAdam` for details.
    c              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrf   ©r(   r?   r   ©r�   Úts     r0   r’   znadam.<locals>.<genexpr>x  ó   è ø€ Ð@±K¨qŒz˜!œUŸ\™\×*±Kùó   ‚$&zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrf   rÅ   rÆ   s     r0   r’   znadam.<locals>.<genexpr>}  rÈ   rÉ   zPAPI has changed, `mu_products` 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\   )r–   rQ   r   r?   rs   rt   rÁ   rŒ   )r   rW   rX   rY   rZ   r[   r#   r   r   r   r\   r   r_   r`   r   r!   r"   r    r²   Úfuncs                       r0   r   r   \  sÕ   € ô8 Ñ@±KÓ@Ô@ÜØ^ó
ð 	
ô Ñ@±KÓ@Ô@ÜØ^ó
ð 	
ð €Ü1Ø�N¨eô
‰
ˆˆ7ñ ”5—9‘9×)Ñ)Ô+ÜÐSÓTÐTá”u—y‘y×-Ñ-Ô/Ü"‰ä#ˆáØØØØØØØØØØ!Ø%ØØ5ØØØ%Øö#r1   )FNFFFF)Ú__doc__Útypingr   r?   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Ú__all__r   rš   rA   rj   rŒ   rÁ   r   rI   r1   r0   Ú<module>rÑ      su  ðá .å ã Ý ÷÷ ÷ ÷ ó ð( �GÐ
€ôsˆIô sðn&ðN	à	ˆð 	ð 
ˆð 	Ø	ˆð 	Ø	Ðð 	Ø	Ðð ð!ñO>ð „ðFaØ�‰Lðaà�‰<ðað �6‰lðað �f‘ð	að
 �f‘ðað �f‘ðað ðað ðað 	ðað ðað ðað 
ðað !ðað ðað  ð!að" ð#að$ ð%að& 
ó'aðH\Ø�‰Lð\à�‰<ð\ð �6‰lð\ð �f‘ð	\ð
 �f‘ð\ð �f‘ð\ð ð\ð ð\ð 	ð\ð ð\ð ð\ð 
ð\ð !ð\ð ð\ð  ð!\ð" ð#\ð$ ð%\ð& 
ó'\ñ~  Ð1EÔFð $)ØØØ ØØñDØ�‰LðDà�‰<ðDð �6‰lðDð �f‘ð	Dð
 �f‘ðDð �f‘ðDð !ðDð �D‰[ðDð ðDð ðDð ðDð ðDð  ð!Dð" ð#Dð$ 	ð%Dð& ð'Dð( ð)Dð* 
ð+Dð, 
ò-Dó GñDr1   