
    sg                         U d dl mZmZmZmZ d dlZd dlmc mZ	 d dlm
Z
 g Zee   ed<   ej                  j                   G d d             Zy)    )DictListOptionalTupleN)Tensor__all__c                   l    e Zd Z	 	 	 	 	 	 	 ddee   dedeeef   dededededefd	Zd
ee	e      fdZ
y)_FunctionalAdamaxparamslrbetasepsweight_decayforeachmaximize_allow_empty_param_listc	                 2   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   |d   |d
| _        || _        || _        t        j
                  j                  t        t        j                  t        t        t        j                  f   f   i       | _
        t        |      dk(  r|st        d      d|i| _        y )N        zInvalid learning rate: zInvalid epsilon value: r   g      ?z#Invalid beta parameter at index 0:    z#Invalid beta parameter at index 1: zInvalid weight_decay value: )r   r   beta1beta2r   z%optimizer got an empty parameter listr   )
ValueErrordefaultsr   r   torchjitannotater   r   strstatelenparam_group)	selfr   r   r   r   r   r   r   r   s	            \/var/www/html/venv/lib/python3.12/site-packages/torch/distributed/optim/functional_adamax.py__init__z_FunctionalAdamax.__init__   s4    by6rd;<<cz6se<==eAh$$B58*MNNeAh$$B58*MNNl";L>JKK 1X1X(
  YY''U\\4U\\@Q;R-R(SUWX
v;!$;DEE %f-    	gradientsc                 z   | j                   d   }g }g }g }g }g }t        |      t        |      k7  r*t        ddt        |       dz   dt        |       z         d}t        | j                   d   |      D ]"  \  }	}
|

|t	        j
                  |	      z  }|j                  |	       |j                  |
       |	| j                  vri | j                  |	<   | j                  |	   }t	        j                  d      |d<   t	        j                  |	t        j                  	      |d
<   t	        j                  |	t        j                  	      |d<   | j                  |	   }|j                  |d
          |j                  |d          |j                  |d          % t	        j                         5  t        j                  |||||| j                  d   | j                  d   | j                  d   | j                  d   | j                  d   | j                  | j                   |       d d d        y # 1 sw Y   y xY w)Nr   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fr   step)memory_formatexp_avgexp_infr   r   r   r   r   )r   r   r   r   r   r   r   has_complex)r    r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_formatno_gradFadamaxr   r   r   )r!   r%   r   params_with_gradgradsexp_avgsexp_infsstate_stepsr+   paramgradientr   s               r"   r'   z_FunctionalAdamax.step?   s   !!(+$&v;#i.(W#CK=34&s9~&678  "4#3#3H#=yI 	2OE8#u//66 ''.X&

*(*DJJu% JJu-E$)LL$5E&M','7'7U-B-B(E)$ (-'7'7U-B-B(E)$ 

5)i 01i 01""5=1/	22 ]]_ 	HH MM%(mmG,mmG,==&!]]>:'	 	 	s   0A8H11H:N)gMbP?)g?g+?g:0yE>r   FFF)__name__
__module____qualname__r   r   floatr   boolr#   r   r'    r$   r"   r
   r
      s    
 %1!(-&.V&. &. UE\"	&.
 &. &. &. &. "&&.P8d8F#34 8r$   r
   )typingr   r   r   r   r   torch.optim._functionaloptim_functionalr3   r   r   r   __annotations__r   scriptr
   rA   r$   r"   <module>rH      sM    . .  # #  c  a a ar$   