
    9i              ,          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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
_to_scalar_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                f  > [        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.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   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super__init__RuntimeError_step_supports_amp_scaling)selfr&   r'   r(   r)   r*   r+   r    r!   r"   r#   r$   r%   defaults	__class__s                 P/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/optim/adam.pyr6   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 ( $,&<
 	*"#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rD   )r5   __setstate__param_groups
setdefaultstategetlentorch	is_tensorr4   tensorr   rE   )r9   rJ   groupr$   pp_statestep_valr;   s          r<   rG   Adam.__setstate__r   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"    rA   rC   r/   rF   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-   )gradrM   
is_complexappend	is_sparser7   rJ   rL   r
   zerosr   rE   rO   
zeros_likepreserve_formatrequires_gradrN   )r9   rP   params_with_gradgradsexp_avgsexp_avg_sqsmax_exp_avg_sqsstate_stepshas_complexrQ   rJ   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+   ri   beta1beta2r'   r*   r)   r!   r    r"   r#   r$   rm   rn   r%   ) _cuda_graph_capture_health_checkrM   enable_gradrH   rj   r   getattr)r9   closurelossrP   rc   rd   re   rf   rg   rh   ro   rp   ri   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)r8   )gMbP?)g?g+?g:0yE>r   FN)__name__
__module____qualname____firstlineno__r   r   r4   r   tupleboolr   r6   rG   rj   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&   rd   re   rf   rg   rh   rm   rn   r+   ri   ro   rp   r'   r*   r)   r!   r"   r#   r%   c          
         Uc  Ub   e[         R                  R                  5       (       aF  [        U[        5      (       d   e[        U
[        5      (       d   e[        U[        5      (       d   eO[        U5      n[        U
[        5      (       a  U
R                  U
R                  4U
0nOS n[        U 5       GH  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(       a  [        U[        5      (       ak  UR                  (       a(  UR-                  [         R.                  " U5      SU-
  S9  OUUR                  U5      R!                  UU[1        [        SU-
  5      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"R3                  5       n#U!R5                  5       n$U(       au  U(       a  UU   R#                  5       n%OUU   n%UU   R7                  [         R8                  " U%U5      5        UU   R5                  5       U$U#-  -  R;                  UU#-  5      n&O(UR5                  5       U$U#-  -  R;                  UU#-  5      n&U(       a!  UR=                  UR#                  5       U&5        OUR=                  UU&5        O[?        U5      nSU
U-  -
  n SUU-  -
  n!UU -  n"U!S
-  n$U(       aB  [         R8                  " UU   UUU   S9  UU   R5                  5       U$-  R;                  U5      n&O"UR5                  5       U$-  R;                  U5      n&UR=                  UU&U"* S	9  U(       d  GMH  [         R&                  " U U   5      (       d  GMi  [         R@                  " UU   5      UU'   GM     g )NIIf capturable=True, params and state_steps must be on supported devices: .r   r   alphaT)rE   rD   non_blocking)weight)value      ?)out)!rM   jitis_scriptingr1   r4   r   r   rE   rD   	enumeratecompileris_compilingr   typemul_rb   addcmul_cloneaddr\   view_as_realtolerp_squarer   negsqrtcopy_maximumadd_addcdiv_r   view_as_complex)'r&   rd   re   rf   rg   rh   rm   rn   r+   ri   ro   rp   r'   r*   r)   r!   r"   r#   r%   
beta1_dictiparamr[   rX   rY   step_tcapturable_supported_devicesrE   rD   keydevice_beta1r@   bias_correction1bias_correction2	step_sizestep_size_negbias_correction2_sqrtrZ   denoms'                                          r<   _single_tensor_adamr   Y  s   , )"333yy "e$$$$%''''%''''^ %  27,,1Le0T

f%5'uQxeAhY1+ ^
Q ~~**,,+L+N(!!V]]%7%77LL%%)EE \\x[yyz{	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*$"'((!T #+ #
3 2<CL L 	dA,- j77""   d!3AI F&//$d5!e)&< 0  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q &r>   c          
      4  ^- [        U 5      S:X  a  g [        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[        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[        U5      n[        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H3  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*  [        R0                  " U [        R2                  " SSS9SS9  O[        R0                  " U S5        US:w  aX  U(       a  [        R4                  " USX-  -
  5        O4U(       a  [        R0                  " UUUS9  O[        R6                  " UUUS9n[        R8                  " UU[%        [:        SU"-
  5      5        [        R4                  " UU5        [        U[        R                  5      (       a  [        R<                  " 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'[        RB                  " U&S5        [        RB                  " U'S5        [        RD                  " U'5        [        RF                  " U&U5        [        RH                  " U&5        [        RJ                  " U'5        U&n(U'n)U(       aE  [%        [&        [           U5      n#[        RL                  " U#U5        [        RN                  " U#5      n*O[        RN                  " U5      n*[        RF                  " U*U)5        [        R0                  " U*U5        [        RF                  " U*U(5        [        RP                  " UUU*5        GM  U  V+s/ s H  n+SU
[S        U+5      -  -
  PM     n&n+U  V+s/ s H  n+SU[S        U+5      -  -
  PM     n'n+[U        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#[        RL                  " U#U5        [        RN                  " U#5      n*O[        RN                  " U5      n*[        RF                  " U*U)5        [        R0                  " U*U5        [        RP                  " UUU*U(5        GM6     g s  sn+f s  sn+f s  sn,f s  sn,f )Nr   r-   r   r.   zHbeta1 as a Tensor is not supported for capturable=False and foreach=Truez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rw   )rE   r   ).0rQ   r@   r   s      r<   	<genexpr>%_multi_tensor_adam.<locals>.<genexpr>V  sN      
 4 HHMMT[[--- >!==>3s   AAr   r   z#_foreach ops don't support autogradcpuTrE   r   r0   )rE   r   r   )+rL   r1   r   r7   r3   r2   rM   r   r   r   allzipr   r   "_group_tensors_by_device_and_dtypestrrE   valuesr   listr   r   _foreach_negis_cpu_foreach_add_rO   _foreach_mul__foreach_add_foreach_lerp_r4   _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&   rd   re   rf   rg   rh   rm   rn   r+   ri   ro   rp   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_stepsrE   r   device_max_exp_avg_sqsscaled_device_gradsr   r   r   r   r   exp_avg_sq_sqrtr@   bcr   s.                                                @r<   _multi_tensor_adamr      sp   , 6{a"fW  88:?:;;%  Z  ;;=A=>>%  Z  ;;=A=>> >>&&((Z'H(
$  
 v3
 
 
 	

 XXtWuuvw	
 
 )"333DDD	BB  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 	\4q<7G+H	
 	.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##	k %|   -X$Hs   "\\)\
\returnc                :   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Ho  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#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MK  [        R                   " U#U%/[#        U#5      -  5        GMr     g )	Nz9Adam with fused=True does not support differentiable=Truer   )NNT)r   r   r   )	r+   r'   ro   rp   r*   r)   r!   rm   rn   )r7   rE   r1   r   r   r   r   itemsr   r   rI   r   rM   r   _fused_adam__fused_adamw_r   rL   )'r&   rd   re   rf   rg   rh   rm   rn   r+   ri   ro   rp   r'   r*   r)   r!   r"   r#   r%   grad_scale_dictfound_inf_dictlr_dictr   rE   r   r   r   r   r   r   r   r   r   r   r   r   device_grad_scaledevice_found_inffuncs'                                          r<   _fused_adamr     sC   , 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O 
!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rw   )r1   rM   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+   ri   ro   rp   r'   r*   r)   r!   r"   r#   rm   rn   r%   )r	   r1   r   rM   r   r   r   r7   r   r   r   r   r   )r&   rd   re   rf   rg   rh   r    r"   r#   r$   rm   rn   ri   r%   r+   ro   rp   r'   r*   r)   r!   r   r   s                          r<   r   r   u  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   rM   r   	optimizerr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r   __doc__r   r}   r4   r   r   r   r   rV   r>   r<   <module>r      s6   ( (       0 6
m9 mb$J		 	 
 		 		 		 		 +KB NDKLDK<DK 6lDK f	DK
 &\DK fDK  DK DK DK DK DK DK 	eVmDK DK  
!DK" #DK$ %DK& 'DK( !)DKNrLr<r 6lr f	r
 &\r fr  r r r r r r 	eVmr r  
!r" #r$ %r& 'r( !)rj]L]<] 6l] f	]
 &\] f]  ] ] ] ] ] ] 	eVm] ]  
!]" #]$ %]& ']( !)]* 
+]@  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>   