
    JTh                         S r SSKrSSKJr  SSKJr  SSKJrJr  SSKJr  SSKJr  SS	K	J	r	  SS
K
J
r
  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  S\\   S\\   S\\   S\\   S\\   S\S\S\S\S\4S jrg)zFunctional interface.    N)Tensor   )adadelta)_make_sparseadagrad)adam)adamax)adamw)asgd)nadam)radam)rmsprop)rprop)sgdparamsgradsexp_avgsexp_avg_sqsstate_stepsepsbeta1beta2lrmaximizec          	        ^^^ [        U 5       GH  u  pX   mU	(       d  TOT* mTR                  5       mTR                  5       mTR                  5       nUR	                  5       S:X  a  M\  TR                  5       mX*   nX:   nXJ   nUUU4S jnUR                  T5      R                  5       nUR                  U5      R                  SU-
  5      nUR                  U" U5      5        UR                  T5      R                  5       nUR                  S5      R                  U5      R                  SU-
  5      nUR                  U" U5      5        UR                  U5      nUR                  U5        UR                  5       R                  U5      nAASXo-  -
  nSX-  -
  nU[        R                  " U5      -  U-  nUR                  U" U* UR                  U5      -  5      5        GM     g)zsFunctional API that performs Sparse Adam algorithm computation.

See :class:`~torch.optim.SparseAdam` for details.
r   c                    > TR                   nTR                  5       S:X  d  U R                  5       S:X  a  U" 5       R                  T5      $ U" TU T5      $ )Nr   )newdim
resize_as_)valuesconstructorgradgrad_indicessizes     O/var/www/auris/envauris/lib/python3.13/site-packages/torch/optim/_functional.pymake_sparse sparse_adam.<locals>.make_sparse7   sL    ((K!Q&&**,!*;"}//55|VT::    r      N)	enumeratecoalesce_indices_valuesnumelr$   sparse_masksubmul_add_powsub_sqrt_mathsqrtdiv_)r   r   r   r   r   r   r   r   r   r   iparamgrad_valuesexp_avg
exp_avg_sqstepr&   old_exp_avg_valuesexp_avg_update_valuesold_exp_avg_sq_valuesexp_avg_sq_update_valuesnumerdenombias_correction1bias_correction2	step_sizer"   r#   r$   s                             @@@r%   sparse_adamrH      s   " f%x#t$}}}}lln!#yy{+ ^
~	; %006>>@ +0B C H HU S[!678 * 6 6t < D D FOOA##$9:??E	J 	! 	$<=> &**+=> %%&;<(..055c:!#;u{?u{?#3447GG	

;	zEJJu,==>?W &r(   )__doc__r6   torchr   r   r   r   r   r	   r
   r   r   r   r   r   r   listintfloatboolrH    r(   r%   <module>rP      s        *         <@L<@<<@ 6l<@ f	<@
 c<@ 
<@ <@ <@ 	<@ <@r(   