
    `i                         U d dl mZ d dlZd dlmc mZ d dlmZ d dlm	Z	 g Z
ee         ed<   ej        j         G d d                      ZdS )    )OptionalN)Tensor)2_scripted_functional_optimizer_deprecation_warning__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   t          d           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 )N   )
stacklevelr   r   z%optimizer got an empty parameter listr   )r   defaultsr   r   r   r   len
ValueErrorparam_grouptorchjitannotatedictr   strstate)selfr   r   r   r   r   r   r   s           |/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/distributed/optim/functional_rprop.py__init__z_FunctionalRprop.__init__   s     	;aHHHH"
 	$ 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.step6   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__listr   floattupleboolr#   r   r'    r$   r"   r   r      s        
 $.*4(-Y YVY Y E5L!	Y
 %,'Y Y Y "&Y Y Y Y85d8F#34 5 5 5 5 5 5r$   r   )typingr   r   torch.optim._functionaloptim_functionalr8   r   ,torch.distributed.optim._deprecation_warningr   r   rC   r   __annotations__r   scriptr   rG   r$   r"   <module>rO      s            # # # # # # # # #           
 c    R R R R R R R R R Rr$   