
    JTh
              ,       ~   S SK JrJrJr  S SKrS SKJr  SSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS/r " S S\5      rS	S
\ S\ S\ S\ S\
 S\ S3-   \l        S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\S\S\\\4   S\\\4   S\\\4   S\S\S\S\S\S \4&S! jr S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\S\S\\\4   S\\\4   S\\\4   S\S\S\S\S\S \4&S" jr!S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\\   S\S\S\S\S\\\4   S\S\S\S\S\S \S#S4(S$ jr"\" \ S%9        S)S\\   S\\   S\\   S\\   S\\   S\\   S&\\   S\S\S'\\   S\\   S\\   S\S \S\S\S\S\\\4   S\S\S\4*S( jj5       r#g)*    )castOptionalUnionN)Tensor   )_capturable_doc_default_to_fused_or_foreach_device_dtype_check_for_fused_differentiable_doc_disable_dynamo_if_unsupported_foreach_doc
_fused_doc!_get_capturable_supported_devices_get_scalar_dtype
_get_value_maximize_doc_params_doc_stack_if_compiling_use_grad_for_differentiable_view_as_real
DeviceDictDeviceDtypeDict	OptimizerParamsTAdamadamc                      ^  \ rS rSr     SSSSSSSS.S\S\\\4   S\\\\4   \\\4   4   S\S	\S
\	S\
\	   S\	S\	S\	S\
\	   S\	4U 4S jjjjrU 4S jrS r\SS j5       rSrU =r$ )r   !   FN)foreachmaximize
capturabledifferentiablefuseddecoupled_weight_decayparamslrbetasepsweight_decayamsgradr   r    r!   r"   r#   r$   c                p  > [        U[        5      (       a8  U(       a  U	(       d  [        S5      eUR                  5       S:w  a  [        S5      eSU::  d  [        SU 35      eSU::  d  [        SU 35      eSUS   s=::  a  S:  d  O  [        S	US    35      eSUS   s=::  a  S:  d  O  [        S
US    35      eSU::  d  [        SU 35      e[        US   [        5      (       a  [        US   [        5      (       d;  [        US   [        5      (       a  [        US   [        5      (       d  [        S5      e[        US   [        5      (       a;  U	(       d  U(       a  [        S5      eUS   R                  5       S:w  a  [        S5      e[        US   [        5      (       a;  U	(       d  U(       a  [        S5      eUS   R                  5       S:w  a  [        S5      e[        UUUUUUUU	U
UUS9n[        TU ]  X5        U(       a,  U
(       a  [        S5      eSU l	        U(       a  [        S5      eg g )NElr as a Tensor is not supported for capturable=False and foreach=Truer   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: z0betas must be either both floats or both TensorszKbetas[0] as a Tensor is not supported for capturable=False and foreach=Truez!Tensor betas[0] must be 1-elementzKbetas[1] as a Tensor is not supported for capturable=False and foreach=Truez!Tensor betas[1] must be 1-element)r&   r'   r(   r)   r*   r    r   r!   r"   r#   r$   z)`fused` does not support `differentiable`Tz0`fused` and `foreach` cannot be `True` together.)

isinstancer   
ValueErrornumelfloatdictsuper__init__RuntimeError_step_supports_amp_scaling)selfr%   r&   r'   r(   r)   r*   r   r    r!   r"   r#   r$   defaults	__class__s                 H/var/www/auris/envauris/lib/python3.13/site-packages/torch/optim/adam.pyr5   Adam.__init__"   s,     b&!!z [  xxzQ !>??by6rd;<<cz6se<==eAh$$B58*MNNeAh$$B58*MNNl";L>JKKa%((Za%-H-H58V,,E!Hf1M1MOPPeAh''' a  Qx~~1$ !DEEeAh''' a  Qx~~1$ !DEE%!)#9
 	*"#NOO.2D+
 "#UVV      c           	        > [         TU ]  U5        U R                   GHD  nUR                  SS5        UR                  SS5        UR                  SS 5        UR                  SS5        UR                  SS5        UR                  SS5        UR                  SS 5      nUS	    H  nU R                  R                  U/ 5      n[        U5      S
:w  d  M0  [        R                  " US   5      (       a  MP  [        US   5      nUS   (       d
  US   (       a'  [        R                  " U[        US9UR                  S9O[        R                  " U[        5       S9US'   M     GMG     g )Nr*   Fr    r   r!   r"   r$   r#   r%   r   stepis_fuseddtypedevicerC   )r4   __setstate__param_groups
setdefaultstategetlentorch	is_tensorr2   tensorr   rD   )r8   rI   groupr#   pp_statestep_valr:   s          r;   rF   Adam.__setstate__q   s/   U#&&EY.Z/Y-\51-u55u=$$Wd3E8_**..B/w<1$U__WV_-M-M$WV_5H !.%. $"3U"C#$88 #\\(:K:MN FO	 % 'r=   c                    SnUS    GHK  n	U	R                   c  M  U[        R                  " U	5      -  nUR                  U	5        U	R                   R                  (       a  [        S5      eUR                  U	R                   5        U R                  U	   n
[        U
5      S:X  a  US   (       a  [        U	5        US   (       d
  US   (       a*  [        R                  " S[        US   S9U	R                  S	9O[        R                  " S
[        5       S9U
S'   [        R                  " U	[        R                  S9U
S'   [        R                  " U	[        R                  S9U
S'   US   (       a&  [        R                  " U	[        R                  S9U
S'   UR                  U
S   5        UR                  U
S   5        US   (       a  UR                  U
S   5        US   (       a  U
S   R                  (       a  [        S5      eUS   (       a3  [        R                   " US   5      (       a  US   (       d  [        S5      eUR                  U
S   5        GMN     U$ )NFr%   zJAdam does not support sparse gradients, please consider SparseAdam insteadr   r#   r!    r@   rB   r-   rE   r?   )memory_formatexp_avg
exp_avg_sqr*   max_exp_avg_sqr"   zB`requires_grad` is not supported for `step` in differentiable moder   r&   r,   )gradrL   
is_complexappend	is_sparser6   rI   rK   r
   zerosr   rD   rN   
zeros_likepreserve_formatrequires_gradrM   )r8   rO   params_with_gradgradsexp_avgsexp_avg_sqsmax_exp_avg_sqsstate_stepshas_complexrP   rI   s              r;   _init_groupAdam._init_group   s    xAvv!u//22 ''*66##&d  QVV$

1u:?W~5a8 !.%. "3U7^"L#$88 #\\#5F5HI &M (-'7'7)>)>(E)$ +0*:*:)>)>+E,' Y'272B2BU-B-B3./ i 01""5#67##**51A+BC)*uV}/J/J&\  )$d44!,/&_  ""5=1{ !| r=   c                    U R                  5         SnUb%  [        R                  " 5          U" 5       nSSS5        U R                   H  n/ n/ n/ n/ n/ n/ n	US   u  pU R	                  UUUUUUU	5      n[        UUUUUU	4US   UU
UUS   US   US   US   US   US	   US
   US   [        U SS5      [        U SS5      US   S.6  M     U$ ! , (       d  f       N= f)zPerform 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#   
grad_scale	found_infr$   )r*   rh   beta1beta2r&   r)   r(   r    r   r!   r"   r#   rl   rm   r$   ) _cuda_graph_capture_health_checkrL   enable_gradrG   ri   r   getattr)r8   closurelossrO   rb   rc   rd   re   rf   rg   rn   ro   rh   s                r;   r?   	Adam.step   s9    	--/""$y % &&E-/"$E%'H(*K,.O(*K >LE** K   i(';">2%Lz*i( .$%56Gn"4t<!$T:',-E'F+' 'V ] %$s   C
C)r7   )gMbP?)g?g+?g:0yE>r   FN)__name__
__module____qualname____firstlineno__r   r   r2   r   tupleboolr   r5   rF   ri   r   r?   __static_attributes____classcell__)r:   s   @r;   r   r   !   s    $(COMW #' $ $',MWMW %- MW U5&=)5+??@	MW
 MW MW MW $MW MW MW MW ~MW !%MW MW^0IV "9 "9r=   af  Implements Adam 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)}          \\
            &\hspace{13mm}      \lambda \text{ (weight decay)},  \: \textit{amsgrad},
                \:\textit{maximize},  \: \epsilon \text{ (epsilon)}                              \\
            &\textbf{initialize} :  m_0 \leftarrow 0 \text{ ( first moment)},
                v_0\leftarrow 0 \text{ (second moment)},\: v_0^{max}\leftarrow 0          \\[-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}\textbf{if} \: \lambda \neq 0                                           \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda  \theta_{t-1}                            \\
            &\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   m_t/\big(1-\beta_1^t \big)                   \\
            &\hspace{5mm}\textbf{if} \: amsgrad                                                  \\
            &\hspace{10mm} v_t^{max} \leftarrow \mathrm{max}(v_{t-1}^{max},v_t)                  \\
            &\hspace{10mm}\widehat{v_t} \leftarrow v_t^{max}/\big(1-\beta_2^t \big)              \\
            &\hspace{5mm}\textbf{else}                                                           \\
            &\hspace{10mm}\widehat{v_t} \leftarrow   v_t/\big(1-\beta_2^t \big)                  \\
            &\hspace{5mm}\theta_t \leftarrow \theta_{t-1} - \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 `Adam: A Method for Stochastic Optimization`_.
    z
    Args:
        a  
        lr (float, Tensor, optional): learning rate (default: 1e-3). A tensor LR
            is not yet supported for all our implementations. Please use a float
            LR if you are not also specifying fused=True or capturable=True.
        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): if True, this optimizer is
            equivalent to AdamW and the algorithm will not accumulate weight
            decay in the momentum nor variance. (default: False)
        amsgrad (bool, optional): whether to use the AMSGrad variant of this
            algorithm from the paper `On the Convergence of Adam and Beyond`_
            (default: False)
        z	
        a=  
    .. Note::
        A prototype implementation of Adam and AdamW for MPS supports `torch.float32` and `torch.float16`.
    .. _Adam\: A Method for Stochastic Optimization:
        https://arxiv.org/abs/1412.6980
    .. _On the Convergence of Adam and Beyond:
        https://openreview.net/forum?id=ryQu7f-RZ

    r%   rc   rd   re   rf   rg   rl   rm   r*   rh   rn   ro   r&   r)   r(   r    r!   r"   r$   c                V   Uc  Ub   e[         R                  R                  5       (       aE  [        U[        5      (       d   e[        U
[        5      (       d   e[        U[        5      (       d   e[        U
[
        5      (       a  U
R                  U
R                  4U
0nOS n[        U 5       GHw  u  nnU(       d  UU   OUU   * nUU   nUU   nUU   n[         R                  R                  5       (       dd  U(       a]  [        5       nUR                  R                  UR                  R                  :X  a  UR                  R                  U;   d   SU S35       eUS-  nUS:w  a  U(       a  UR                  SX-  -
  5        OoU(       aX  [        U[
        5      (       aC  UR                  (       a!  UR                  UR!                  5       U5      nO!UR#                  UUS9nOUR#                  UUS9n[         R$                  " U5      (       a{  [         R&                  " U5      n[         R&                  " U5      n[         R&                  " U5      nU(       a  [         R&                  " UU   5      UU'   [         R&                  " U5      nUR                  nUb0  UR                  nUU4nUU;  a  U
R)                  UUSS9UU'   UU   nOU
nUR+                  USU-
  5        U(       ar  [        U[
        5      (       a]  UR                  (       a(  UR+                  [         R,                  " U5      SU-
  S9  OGUR                  U5      R                  UUSU-
  S	9  O#UR                  U5      R                  UUSU-
  S	9  U(       d  U(       Ga  UnU(       aF  [        U
[
        5      (       a1  U
R                  (       a  SU
UR!                  5       -  -
  n OSU
U-  -
  n OSU
U-  -
  n U(       aF  [        U[
        5      (       a1  UR                  (       a  SUUR!                  5       -  -
  n!OSUU-  -
  n!OSUU-  -
  n!UU -  n"U"R/                  5       n#U!R1                  5       n$U(       au  U(       a  UU   R!                  5       n%OUU   n%UU   R3                  [         R4                  " U%U5      5        UU   R1                  5       U$U#-  -  R7                  UU#-  5      n&O(UR1                  5       U$U#-  -  R7                  UU#-  5      n&U(       a!  UR9                  UR!                  5       U&5        OUR9                  UU&5        O[;        U5      nSU
U-  -
  n SUU-  -
  n!UU -  n"U!S
-  n$U(       aB  [         R4                  " UU   UUU   S9  UU   R1                  5       U$-  R7                  U5      n&O"UR1                  5       U$-  R7                  U5      n&UR9                  UU&U"* S	9  U(       d  GM:  [         R$                  " U U   5      (       d  GM[  [         R<                  " UU   5      UU'   GMz     g )NIIf capturable=True, params and state_steps must be on supported devices: .r   r   alphaT)rD   rC   non_blocking)weight)value      ?)out)rL   jitis_scriptingr/   r2   r   rD   rC   	enumeratecompileris_compilingr   typemul_ra   addcmul_cloneaddr[   view_as_realtolerp_squarenegsqrtcopy_maximumadd_addcdiv_r   view_as_complex)'r%   rc   rd   re   rf   rg   rl   rm   r*   rh   rn   ro   r&   r)   r(   r    r!   r"   r$   
beta1_dictiparamrZ   rW   rX   step_tcapturable_supported_devicesrD   rC   keydevice_beta1r?   bias_correction1bias_correction2	step_sizestep_size_negbias_correction2_sqrtrY   denoms'                                          r;   _single_tensor_adamr   X  s   , )"333yy "e$$$$%''''%'''' %  27,,1Le0T

f%5'uQxeAhY1+ ^
Q ~~**,,+L+N(!!V]]%7%77LL%%)EE{ [[wZxxyz{F
 	!1%

1r001 "jv&F&F#11#}}U[[]LI#xx\xB88E8>DE""%%d+D((1G++J7J%*%7%78J%K"&&u-E!KKE 5/C*$"'((&TX("Y
31;CL L 	dA,- j77""   d!3AI F&//d!e)/LOOE"++D$a%i+HD *UF";";&&'(5DJJL+@'@$'(5$;$#$ud{?  *UF";";&&'(5DJJL+@'@$'(5$;$#$ud{? --I%MMOM$4$9$9$;!!%4Q%7%=%=%?N%4Q%7N"((~z)RS $A&++-1F1VW$s]*+ 
 OO%)>)NO$s]*+  w}}6w.f%D 5$; 5$;--I$4c$9!oa0*/RSBTU )+0025JJPPQTU#*-BBHHMNN7E)N< 7u''q	22!&!6!6q7I!JOAe &r=   c          	        ^- [        U 5      S:X  a  g [        U[        5      (       a  U(       d  [        S5      e[        U
[        5      (       a1  U(       d  [	        S5      eU
R                  5       S:w  a  [	        S5      e[        U[        5      (       a1  U(       d  [	        S5      eUR                  5       S:w  a  [	        S5      e[        R                  R                  5       (       d>  U(       a7  [        SS	9m-[        U-4S
 j[        X5       5       5      (       d   ST- S35       eUc  Ub   eU(       a   S5       e[        R                  " XX#XE/5      n[        U
[        5      (       a'  [        U
R                  5      S:w  a  U
R                  U
0OS nUR!                  5        GH%  u  u  nnnnnnn[#        [$        [           U5      n[#        [$        [           U5      n[#        [$        [           U5      n[#        [$        [           U5      n[#        [$        [           U5      n US   R                  n!Ub  U!U;  a  U
R'                  U!SS9UU!'   U(       a  UU!   OU
n"U	(       a<  U(       a'  [#        [$        [           U5      n#[)        UUUUU#5        O[)        UUUU5        U(       a  [        R*                  " U5      n[        R                  R                  5       (       d>  U S   R,                  (       a*  [        R.                  " U [        R0                  " SSS9SS9  O[        R.                  " U S5        US:w  aX  U(       a  [        R2                  " USX-  -
  5        O4U(       a  [        R.                  " UUUS9  O[        R4                  " UUUS9n[        R6                  " UUSU"-
  5        [        R2                  " UU5        [        U[        R                  5      (       a  [        R8                  " USU-
  5      n$Sn%OUn$SU-
  n%[        R:                  " UU$UU%5        AA$U(       Ga{  [        R<                  " U
U 5      n&[        R<                  " UU 5      n'[        R>                  " U&S5        [        R>                  " U'S5        [        R@                  " U'5        [        RB                  " U&U5        [        RD                  " U&5        [        RF                  " U'5        U&n(U'n)U(       aE  [#        [$        [           U5      n#[        RH                  " U#U5        [        RJ                  " U#5      n*O[        RJ                  " U5      n*[        RB                  " U*U)5        [        R.                  " U*U5        [        RB                  " U*U(5        [        RL                  " UUU*5        GM  U  V+s/ s H  n+SU
[O        U+5      -  -
  PM     n&n+U  V+s/ s H  n+SU[O        U+5      -  -
  PM     n'n+[Q        U& V,s/ s H  n,UU,-  S-  PM     sn,5      n(U' V,s/ s H  n,U,S-  PM
     n)n,U(       aE  [#        [$        [           U5      n#[        RH                  " U#U5        [        RJ                  " U#5      n*O[        RJ                  " U5      n*[        RB                  " U*U)5        [        R.                  " U*U5        [        RL                  " UUU*U(5        GM(     g s  sn+f s  sn+f s  sn,f s  sn,f )Nr   r,   zHbeta1 as a Tensor is not supported for capturable=False and foreach=Truer   zTensor beta1 must be 1-elementzHbeta2 as a Tensor is not supported for capturable=False and foreach=TruezTensor beta2 must be 1-elementF)supports_xlac              3      >#    U  HT  u  pUR                   R                  UR                   R                  :H  =(       a    UR                   R                  T;   v   MV     g 7frv   )rD   r   ).0rP   r?   r   s      r;   	<genexpr>%_multi_tensor_adam.<locals>.<genexpr>I  sN      
 4 HHMMT[[--- >!==>3s   AAr   r   z#_foreach ops don't support autogradcpuTrD   r   r.   )rD   r   r   ))rK   r/   r   r6   r0   r1   rL   r   r   r   allzipr   "_group_tensors_by_device_and_dtypestrrD   valuesr   listr   r   _foreach_negis_cpu_foreach_add_rN   _foreach_mul__foreach_add_foreach_lerp__foreach_mul_foreach_addcmul__foreach_pow_foreach_sub__foreach_neg__foreach_div__foreach_reciprocal__foreach_sqrt__foreach_maximum__foreach_sqrt_foreach_addcdiv_r   r   ).r%   rc   rd   re   rf   rg   rl   rm   r*   rh   rn   ro   r&   r)   r(   r    r!   r"   r$   grouped_tensorsr   device_params_device_grads_device_exp_avgs_device_exp_avg_sqs_device_max_exp_avg_sqs_device_state_steps__device_paramsdevice_gradsdevice_exp_avgsdevice_exp_avg_sqsdevice_state_stepsrD   r   device_max_exp_avg_sqsscaled_device_gradsr   r   r   r   r   exp_avg_sq_sqrtr?   bcr   s.                                                @r;   _multi_tensor_adamr     s>   , 6{a"fjS
 	
 %  Z  ;;=A=>>%  Z  ;;=A=>> >>&&((Z'H(
$  
 v3
 
 
 	w WWsVttuv		w 
 )"333DDDBB	LO eV$$U\\):e)C 
u  ""$		 	T&\>:DL-8tF|-=>!$v,0CD!$v,0CDq!((!fJ&>!&d!KJv-7z&)U )-d6l<S)T&! #&* !<BT  --l;L ~~**,,1CA1F1M1M"ELLU$C3  2A61%##M1r7H3HI ''m<X#(#5#5$m<$L 	_lA<LM.6 eU\\**"'"4"4\1u9"ME".IE 3\5	

  $11%9KL$11%9KL 0!4 0!4 01  0"5&&'78  !12
 )I$4!)-d6l<S)T&''(>@RS #("5"56L"M"'"5"56H"I1FG5; ##M?OT ;M :L$EZ---:L    ;M :L$EZ---:L    ,FV,WFVb2g^FV,WXI7G$H7GRW7G!$H)-d6l<S)T&''(>@RS #("5"56L"M"'"5"56H"I1FG5##g %x   -X$Hs   *[[1[
[returnc                j   U (       d  g U(       a  [        S5      eUb  UR                  U0O0 nUb  UR                  U0O0 n[        U[        5      (       a'  [	        UR                  5      S:w  a  UR                  U0OS n[
        R                  " XX#XE/5      nUR                  5        GH  u  u  nnu  u  nnnnnnn[        [        [           U5      n[        [        [           U5      n [        [        [           U5      n![        [        [           U5      n"[        [        [           U5      n#UR                  S:X  a  Uc  Ub   eSu  n$n%Ub   UR                  UUR                  USS95      n$Ub   UR                  UUR                  USS95      n%Ub  UU;  a  UR                  USS9UU'   UU   n[        R                  " U#S5        U(       d  [        R                  O[        R                   n&U&" UU U!U"UU#UUU
UUUUU$U%S	9  U%c  GMc  [        R"                  " U#U%/[%        U#5      -  5        GM     g )
Nz9Adam with fused=True does not support differentiable=Truer   mps)NNT)r   r   r   )	r*   r&   rn   ro   r)   r(   r    rl   rm   )r6   rD   r/   r   r   r   r   itemsr   r   r   rH   r   rL   r   _fused_adam__fused_adamw_r   rK   )'r%   rc   rd   re   rf   rg   rl   rm   r*   rh   rn   ro   r&   r)   r(   r    r!   r"   r$   grad_scale_dictfound_inf_dictlr_dictr   rD   r   r   r   r   r   r   r   r   r   r   r   r   device_grad_scaledevice_found_inffuncs'                                          r;   _fused_adamr     s`   , VWW ,6+A		J'r  *3)>		9%B  &b&11c"))n6MBSW   BB	LO 
			 
	 
	
"	T&\>:DL-8tF|-=>!$v,0CD!$v,0CD;;%$);;;.8++! / : :
f4@!  -88	V$?  6#8 ee6eEGFOB.2)?u!!UEXEX"%(&	
" '"%5$6=O9P$PU 
!r=   )single_tensor_fnr   r#   c                   U	c5  Uc2  [        XSS9u  nnU(       a  [        U[        5      (       a	  U(       d  SnU	c  Sn	Uc  Sn[        R                  R                  5       (       d"  [        S U 5       5      (       d  [        S5      eU(       a.  [        R                  R                  5       (       a  [        S5      eU	(       a.  [        R                  R                  5       (       a  [        S5      eU	(       a*  [        R                  R                  5       (       d  [        nO7U(       a*  [        R                  R                  5       (       d  [        nO[        nU" U UUUUU4UUUUUUUUUUU
UUS.6  g)	zfFunctional API that performs Adam algorithm computation.

See :class:`~torch.optim.Adam` for details.
NF)	use_fusedc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7frv   )r/   rL   r   )r   ts     r;   r   adam.<locals>.<genexpr>  s!      5-8
1ell##[s   ')zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers)r*   rh   rn   ro   r&   r)   r(   r    r!   r"   rl   rm   r$   )r	   r/   r   rL   r   r   r   r6   r   r   r   r   r   )r%   rc   rd   re   rf   rg   r   r!   r"   r#   rl   rm   rh   r$   r*   rn   ro   r&   r)   r(   r    r   r   s                          r;   r   r   a  sR   F }1e

7 z"f--jG} >>&&(( 5-85 2 2 ^
 	
 599))++STT''))QRRUYY++--	//11!" !%5'r=   )NFFNNNFF)$typingr   r   r   rL   r   	optimizerr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   __doc__r   r|   r2   r   r   r   r   rU   r=   r;   <module>r      s6   ( (       . 6
m9 mb$J		 	 
 		 		 		 		 +KB N{KL{K<{K 6l{K f	{K
 &\{K f{K  {K {K {K {K {K {K 	eVm{K {K  
!{K" #{K$ %{K& '{K( !){K|eLe<e 6le f	e
 &\e fe  e e e e e e 	eVme e  
!e" #e$ %e& 'e( !)eP`L`<` 6l` f	`
 &\` f`  ` ` ` ` ` ` 	eVm` `  
!`" #`$ %`& '`( !)`* 
+`F  1DE #  #'"&#(!WLW<W 6lW f	W
 &\W fW d^W W W D>W  W W W  !!W$ %W& 'W( )W* 	eVm+W, -W. 
/W0 1W FWr=   