
    3Ki                         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\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maximizereturnc          	        ^^^ [        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     Y/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/torch/optim/_functional.pymake_sparse sparse_adam.<locals>.make_sparse8   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_adamrI      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__r7   torchr   r   r   r   r   r	   r
   r   r   r   r   r   r   listintfloatboolrI    r)   r&   <module>rQ      s        *         <@L<@<<@ 6l<@ f	<@
 c<@ 
<@ <@ <@ 	<@ <@ 
<@r)   