
    קgS                         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dS )    )DictListOptionalTupleN)Tensor__all__c                       e Zd Z	 	 	 	 	 	 ddee         dedeeef         deeef         d	ed
edefdZdee	e                  fdZ
dS )_FunctionalRprop{Gz?g      ?g333333?gư>2   Fparamslretas
step_sizesforeachmaximize_allow_empty_param_listc                 Z   d|i| _         || _        || _        || _        || _        t          |          dk    r|st          d          d|i| _        t          j	        
                    t          t          j        t          t          t          j        f         f         i           | _        d S )Nr   r   z%optimizer got an empty parameter listr   )defaultsr   r   r   r   len
ValueErrorparam_grouptorchjitannotater   r   strstate)selfr   r   r   r   r   r   r   s           d/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/distributed/optim/functional_rprop.py__init__z_FunctionalRprop.__init__   s     "
 	$ v;;!$;DEEE %f-Y''U\4U\@Q;R-R(SUWXX


    	gradientsc                 *   | j         d         }g }g }g }g }g }| j        d         }| j        \  }	}
| j        \  }}t	          |          t	          |          k    r6t          ddt	          |           dz   dt	          |           z             d}t          ||          D ]\  }}||t          j        |          z  }|	                    |           |	                    |           || j
        vrii | j
        |<   | j
        |         }t          j        d          |d	<   t          j        |t          j        
          |d<   t          j        ||          |d<   | j
        |         }|	                    |d                    |	                    |d                    |	                    |d	                    t          j                    5  t!          j        ||||||||	|
| j        | j        |           d d d            d S # 1 swxY w Y   d S )Nr   r   zEthe gradients passed in does not equal to the size of the parameters!zParams length: z. zGradients length: Fg        step)memory_formatprev	step_size)step_size_minstep_size_maxetaminusetaplusr   r   has_complex)r   r   r   r   r   r   zipr   
is_complexappendr   tensor
zeros_likepreserve_format	full_likeno_gradFrpropr   r   )r    r$   r   params_with_gradgradsprevsr   state_stepsr   r,   r-   r*   r+   r.   paramgradientr   s                    r!   r&   z_FunctionalRprop.step2   s   !(+
]4  I''+$}v;;#i..((W3CKK33347s9~~778   "6955 	2 	2OE8#u/666 ''...X&&&
**(*DJu% Ju-E$)L$5$5E&M$)$4U-B% % %E&M */2)F)FE+&
5)U6]+++!!%"4555""5=111]__ 	 	G ++!'   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +HHHN)r   r   r   FFF)__name__
__module____qualname__r   r   floatr   boolr"   r   r&    r#   r!   r
   r
      s        
 $.*4(-Y YVY Y E5L!	Y
 %,'Y Y Y "&Y Y Y Y65d8F#34 5 5 5 5 5 5r#   r
   )typingr   r   r   r   r   torch.optim._functionaloptim_functionalr7   r   r   r   __annotations__r   scriptr
   rD   r#   r!   <module>rK      s    . . . . . . . . . . . . .  # # # # # # # # #       c    Q Q Q Q Q Q Q Q Q Qr#   