§
    Ë²Åj	S  ã            !       ó  — d dl mZmZmZmZ d dlZd dlmZ ddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ ddgZ G d„ de¦  «        Zd	d
e› de› de› de
› d�	z   e_        	 	 	 	 	 	 	 d%dee         dee         dee         dee         dee         dee         dee         dedee         dededededededef d„Zd „ Zdee         dee         dee         dee         dee         dee         dedededededededefd!„Zdee         dee         dee         dee         dee         dee         dedededededededefd"„Zdee         dee         dee         dee         dee         dee         dedededededededed#dfd$„ZdS )&é    )ÚcastÚListÚOptionalÚUnionN)ÚTensoré   )Ú_default_to_fused_or_foreachÚ_device_dtype_check_for_fusedÚ_differentiable_docÚ_foreach_docÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ_use_grad_for_differentiableÚ_view_as_realÚ	OptimizerÚParamsTÚAdagradÚadagradc                   ó¶   ‡ — e Zd Z	 	 	 	 	 	 dddddœdedeeef         d	ed
edededee         dededee         fˆ fd„Z	ˆ fd„Z
d„ Zd„ Zedd„¦   «         Zˆ xZS )r   ç{®Gáz„?r   ç»½×Ùß|Û=NF)ÚmaximizeÚdifferentiableÚfusedÚparamsÚlrÚlr_decayÚweight_decayÚinitial_accumulator_valueÚepsÚforeachr   r   r   c                óÌ  •— t          |t          ¦  «        r'|                     ¦   «         dk    rt          d¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚d|k    st          d|› �¦  «        ‚t	          ||||||||	|
¬	¦	  «	        }t          ¦   «                              ||¦  «         |
r)|	rt          d
¦  «        ‚|rt          d¦  «        ‚d| _        | j	        D ]Á}|d         D ]¶}| j
        |         }|d         r0t          j        dt          |d         ¬¦  «        |j        ¬¦  «        n!t          j        dt          ¦   «         ¬¦  «        |d<   t          j        |¦  «        rt#          ||¦  «        n|}t          j        ||t          j        ¬¦  «        |d<   Œ·ŒÂd S )Nr   zTensor lr must be 1-elementg        zInvalid learning rate: zInvalid lr_decay value: zInvalid weight_decay value: z)Invalid initial_accumulator_value value: zInvalid epsilon value: )	r   r   r"   r    r!   r#   r   r   r   z)`fused` does not support `differentiable`z0`fused` and `foreach` cannot be `True` together.Tr   r   © ©Úis_fused)ÚdtypeÚdevice©r(   Ústep)Úmemory_formatÚsum)Ú
isinstancer   ÚnumelÚ
ValueErrorÚdictÚsuperÚ__init__ÚRuntimeErrorÚ"_need_device_dtype_check_for_fusedÚparam_groupsÚstateÚtorchÚzerosr   r)   ÚtensorÚ
is_complexÚcomplexÚ	full_likeÚpreserve_format)Úselfr   r   r   r    r!   r"   r#   r   r   r   ÚdefaultsÚgroupÚpr7   Ú
init_valueÚ	__class__s                   €úDC:\Projects\Historical\venv\Lib\site-packages\torch/optim/adagrad.pyr3   zAdagrad.__init__   si  ø€ õ �b�&Ñ!Ô!ð 	< b§h¢h¡j¤j°A¢o oÝÐ:Ñ;Ô;Ð;Ø�bŠyˆyÝÐ;°rÐ;Ð;Ñ<Ô<Ð<Ø�hŠˆÝÐB¸ÐBÐBÑCÔCÐCØ�lÒ"Ð"ÝÐJ¸LÐJÐJÑKÔKÐKØÐ/Ò/Ð/ÝØWÐ<UÐWÐWñô ð ð �cŠzˆzÝÐ<°sÐ<Ð<Ñ=Ô=Ð=åØØØØ%Ø&?ØØØ)Øð

ñ 

ô 

ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*àð 	;Øð PÝ"Ð#NÑOÔOÐOØð WÝ"Ð#UÑVÔVÐVØ6:ˆDÔ3àÔ&ð 	ð 	ˆEØ˜8”_ð ð �Øœ
 1œ�ð ˜W”~ðF•E”KØÝ/¸¸w¼ÐHÑHÔHØ œxðñ ô ð õ œ cÕ1BÑ1DÔ1DÐEÑEÔEð �f‘õ Ô'¨Ñ*Ô*ð3•GÐ5Ð7PÑQÔQÐQà2ð õ
  %œØ�zµÔ1Fð ñ  ô  ��e‘�ð!ð	ð 	ó    c                 óJ  •— t          ¦   «                              |¦  «         d }| j        D ]Z}|                     dd ¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd ¦  «        }Œ[t	          | j                             ¦   «         ¦  «        }t          |¦  «        dk    ot          j	        |d         d         ¦  «        }|s?|D ]>}t          j
        t          |d         ¦  «        t          |¬¦  «        ¬	¦  «        |d<   Œ=d S d S )
Nr#   r   Fr   r   r   r+   r&   r*   )r2   Ú__setstate__r6   Ú
setdefaultÚlistr7   ÚvaluesÚlenr8   Ú	is_tensorr:   Úfloatr   )r?   r7   r   rA   Ústate_valuesÚstep_is_tensorÚsrD   s          €rE   rH   zAdagrad.__setstate__a   s@  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ð ˆØÔ&ð 	4ð 	4ˆEØ×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×$Ò$ W¨dÑ3Ô3ˆEˆEå˜DœJ×-Ò-Ñ/Ô/Ñ0Ô0ˆÝ˜lÑ+Ô+¨qÒ0ð 
µe´oØ˜ŒO˜FÔ#ñ7
ô 7
ˆð ð 	Ø!ð ð �Ý!œLÝ˜!˜Fœ)Ñ$Ô$Õ,=ÀuÐ,MÑ,MÔ,Mðñ ô ��&‘	�	ð	ð 	ðð rF   c                 ó~   — | j         D ]4}|d         D ])}| j        |         }|d                              ¦   «          Œ*Œ5d S )Nr   r-   )r6   r7   Úshare_memory_)r?   rA   rB   r7   s       rE   Úshare_memoryzAdagrad.share_memoryv   sZ   € ØÔ&ð 	-ð 	-ˆEØ˜8”_ð -ð -�Øœ
 1œ�Ø�e”×*Ò*Ñ,Ô,Ð,Ð,ð-ð	-ð 	-rF   c                 óÊ  — d\  }}|d         D ]Ò}|j         �É|d         r)t          | dd¦  «        rt          |d¬¦  «         d| _        ||j         j        z  }|t          j        |¦  «        z  }|                     |¦  «         |                     |j         ¦  «         | j        |         }	|                     |	d         ¦  «         |                     |	d	         ¦  «         ŒÓ||fS )
N)FFr   r   r5   T)Úcuda_unsupportedFr-   r+   )	ÚgradÚgetattrr
   r5   Ú	is_sparser8   r;   Úappendr7   )
r?   rA   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexrB   r7   s
             rE   Ú_init_groupzAdagrad._init_group|   sÿ   € Ø'3Ñ$ˆ˜Ø�x”ð 	2ð 	2ˆAØŒvÐ!Ø˜”>ð D¥gØØ8Øñ'ô 'ð Dõ
 2°!ÀdÐKÑKÔKÐKØ>C�DÔ;Ø 1¤6Ô#3Ñ3�Ø�uÔ/°Ñ2Ô2Ñ2�Ø ×'Ò'¨Ñ*Ô*Ð*Ø—’˜QœVÑ$Ô$Ð$Øœ
 1œ�Ø×!Ò! %¨¤,Ñ/Ô/Ð/Ø×"Ò" 5¨¤=Ñ1Ô1Ð1øà Ð+Ð+rF   c                 ó®  — d}|�5t          j        ¦   «         5   |¦   «         }ddd¦  «         n# 1 swxY w Y   | j        D ]“}g }g }g }g }|                      |||||¦  «        \  }}	t	          |||||d         |d         |d         |d         ||d         |d         |d         |	|d	         t          | d
d¦  «        t          | dd¦  «        ¬¦  «         Œ”|S )z°Perform a single optimization step.

        Args:
            closure (Callable, optional): A closure that reevaluates the model
                and returns the loss.
        Nr   r    r   r"   r#   r   r   r   Ú
grad_scaleÚ	found_inf)r   r    r   r"   r_   r#   r   r   r`   r   rc   rd   )r8   Úenable_gradr6   ra   r   rX   )
r?   ÚclosureÚlossrA   r[   r\   r]   r^   r_   r`   s
             rE   r+   zAdagrad.step‘   s`  € ð ˆàÐÝÔ"Ñ$Ô$ð !ð !Ø�w‘y”y�ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô&ð 	ð 	ˆEØ-/ÐØ"$ˆEØ')ˆJØ(*ˆKà+/×+;Ò+;ØÐ'¨°
¸Kñ,ô ,Ñ(ˆO˜[õ Ø ØØØØ˜”;Ø" >Ô2Ø˜zÔ*Ø˜%”LØ /Ø˜iÔ(Ø˜zÔ*Ø$Ð%5Ô6Ø'Ø˜G”nÝ" 4¨°tÑ<Ô<Ý! $¨°TÑ:Ô:ð!ñ ô ð ð ð& ˆs   ˜/¯3¶3)r   r   r   r   r   N©N)Ú__name__Ú
__module__Ú__qualname__r   r   rN   r   r   Úboolr3   rH   rT   ra   r   r+   Ú__classcell__)rD   s   @rE   r   r      sJ  ø€ € € € € ð $(ØØØ+,ØØ"&ðDð Ø$Ø $ðDð Dð DàðDð �%˜�-Ô ðDð ð	Dð
 ðDð $)ðDð ðDð ˜$”ðDð ðDð ðDð ˜Œ~ðDð Dð Dð Dð Dð DðLð ð ð ð ð*-ð -ð -ð,ð ,ð ,ð* "ð*ð *ð *ñ "Ô!ð*ð *ð *ð *ð *rF   a[  Implements Adagrad algorithm.

    .. math::
       \begin{aligned}
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{input}      : \gamma \text{ (lr)}, \: \theta_0 \text{ (params)}, \: f(\theta)
                \text{ (objective)}, \: \lambda \text{ (weight decay)},                          \\
            &\hspace{12mm}    \tau \text{ (initial accumulator value)}, \: \eta\text{ (lr decay)}\\
            &\textbf{initialize} :  state\_sum_0 \leftarrow \tau                          \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                                 \\
            &\textbf{for} \: t=1 \: \textbf{to} \: \ldots \: \textbf{do}                         \\
            &\hspace{5mm}g_t           \leftarrow   \nabla_{\theta} f_t (\theta_{t-1})           \\
            &\hspace{5mm} \tilde{\gamma}    \leftarrow \gamma / (1 +(t-1) \eta)                  \\
            &\hspace{5mm} \textbf{if} \: \lambda \neq 0                                          \\
            &\hspace{10mm} g_t \leftarrow g_t + \lambda \theta_{t-1}                             \\
            &\hspace{5mm}state\_sum_t  \leftarrow  state\_sum_{t-1} + g^2_t                      \\
            &\hspace{5mm}\theta_t \leftarrow
                \theta_{t-1}- \tilde{\gamma} \frac{g_t}{\sqrt{state\_sum_t}+\epsilon}            \\
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
            &\bf{return} \:  \theta_t                                                     \\[-1.ex]
            &\rule{110mm}{0.4pt}                                                          \\[-1.ex]
       \end{aligned}

    For further details regarding the algorithm we refer to `Adaptive Subgradient Methods for Online Learning
    and Stochastic Optimization`_.
    z
    Args:
        aÙ  
        lr (float, Tensor, optional): learning rate (default: 1e-2)
        lr_decay (float, optional): learning rate decay (default: 0)
        weight_decay (float, optional): weight decay (L2 penalty) (default: 0)
        initial_accumulator_value (float, optional): initial value of the
            sum of squares of gradients (default: 0)
        eps (float, optional): term added to the denominator to improve
            numerical stability (default: 1e-10)
        z	
        aÒ  
        fused (bool, optional): whether the fused implementation (CPU only) is used.
            Currently, `torch.float64`, `torch.float32`, `torch.float16`, and `torch.bfloat16`
            are supported. (default: None). Please note that the fused implementations does not
            support sparse or complex gradients.
    .. _Adaptive Subgradient Methods for Online Learning and Stochastic
        Optimization: http://jmlr.org/papers/v12/duchi11a.html

    Fr   r\   r]   r^   r   rc   rd   r_   r#   r   r`   r   r    r   r"   r   c                ó4  — t          d„ |D ¦   «         ¦  «        st          d¦  «        ‚|€|€t          | |	d¬¦  «        \  }}|€d}|€d}|r-t          j                             ¦   «         rt          d¦  «        ‚|r-t          j                             ¦   «         rt          d¦  «        ‚|r&t          j                             ¦   «         st          }n/|r&t          j                             ¦   «         st          }nt          } || ||||||||||	|
||¬¦  «         dS )	ztFunctional API that performs Adagrad algorithm computation.

    See :class:`~torch.optim.Adagrad` for details.
    c              3   óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rh   )r.   r8   r   )Ú.0Úts     rE   ú	<genexpr>zadagrad.<locals>.<genexpr>  s.   è è € Ð@Ð@¨q�z˜!�Uœ\Ñ*Ô*Ð@Ð@Ð@Ð@Ð@Ð@rF   zPAPI has changed, `state_steps` argument must contain a list of singleton tensorsNF)Ú	use_fusedz6torch.jit.script not supported with foreach optimizersz4torch.jit.script not supported with fused optimizers©
r   r    r   r"   r_   r   r   r`   rc   rd   )	Úallr4   r	   r8   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   r\   r]   r^   r   rc   rd   r_   r#   r   r`   r   r    r   r"   r   Ú_Úfuncs                     rE   r   r   ò   sn  € õ2 Ð@Ð@°KÐ@Ñ@Ô@Ñ@Ô@ð 
ÝØ^ñ
ô 
ð 	
ð €}˜˜Ý1Ø�N¨eð
ñ 
ô 
‰
ˆˆ7ð €}ØˆØ€Øˆàð U•5”9×)Ò)Ñ+Ô+ð UÝÐSÑTÔTÐTØð S•”×'Ò'Ñ)Ô)ð SÝÐQÑRÔRÐRàð &•U”Y×+Ò+Ñ-Ô-ð &ÝˆˆØ	ð &�œ×/Ò/Ñ1Ô1ð &Ý$ˆˆå%ˆà€DØØØØØØ!ØØØ'ØØ%ØØØðñ ô ð ð ð rF   c                 óV   — |                       ¦   «         }t          j        |||¦  «        S rh   )Úsizer8   Úsparse_coo_tensor)rW   Úgrad_indicesrK   r~   s       rE   Ú_make_sparser�   <  s$   € Ø�9Š9‰;Œ;€DÝÔ" <°¸Ñ>Ô>Ð>rF   c          
      óÆ  — |€|�J ‚t          | |||¦  «        D �]F\  }}}}|dz  }t          |¦  «        }|s|n| }|dk    r-|j        rt          d¦  «        ‚|                     ||¬¦  «        }|d|dz
  |z  z   z  }|j        rí|                     ¦   «         }|                     ¦   «         }|                     ¦   «         }|                     t          ||| 
                    d¦  «        ¦  «        ¦  «         |                     |¦  «        }|                     ¦   «                              ¦   «                              |	¦  «        }|                     t          ||||z  ¦  «        | ¬¦  «         �ŒXt          j        |¦  «        }|r<t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|                     ||d¬¦  «         |r|                     ¦   «         |	z   }n'|                     ¦   «                              |	¦  «        }|                     ||| ¬¦  «         |r(t          j        |¦  «        }t          j        |¦  «        }�ŒHd S )Nr   r   z;weight_decay option is not compatible with sparse gradients©Úalphaé   ©Úvalue)Úzipr   rY   r4   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r�   ÚpowÚsparse_maskÚsqrt_r8   r;   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   r\   r]   r^   rc   rd   r   r    r   r"   r_   r   r   r`   ÚparamrW   Ú	state_sumÚstep_tr+   Úclrr€   Úgrad_valuesÚstdÚ
std_valuesr;   s                            rE   rz   rz   A  sw  € ð" Ð )Ð"3Ð"3Ð3Ý*-¨f°e¸ZÈÑ*UÔ*Uð (=ñ (=Ñ&ˆˆt�Y à�!‰ˆÝ˜&Ñ!Ô!ˆØ#Ð.ˆtˆt¨$¨ˆà˜1ÒÐØŒ~ð Ý"ØQñô ð ð —8’8˜E¨�8Ñ6Ô6ˆDà�A˜ ™ XÑ-Ñ-Ñ.ˆàŒ>ð 	=Ø—=’=‘?”?ˆDØŸ=š=™?œ?ˆLØŸ,š,™.œ.ˆKà�NŠN�<¨¨l¸K¿OºOÈAÑ<NÔ<NÑOÔOÑPÔPÐPØ×'Ò'¨Ñ-Ô-ˆCØŸš™œ×,Ò,Ñ.Ô.×3Ò3°CÑ8Ô8ˆJØ�JŠJÝ˜T <°¸zÑ1IÑJÔJÐSVÐRVð ñ ô ð ñ õ Ô)¨%Ñ0Ô0ˆJØð 2ÝÔ)¨$Ñ/Ô/�Ý!Ô.¨yÑ9Ô9�	ÝÔ*¨5Ñ1Ô1�Ø×Ò˜t T°ÐÑ3Ô3Ð3Øð 1Ø—n’nÑ&Ô&¨Ñ,��à—n’nÑ&Ô&×+Ò+¨CÑ0Ô0�Ø�NŠN˜4 ¨S¨DˆNÑ1Ô1Ð1Øð =ÝÔ-¨eÑ4Ô4�Ý!Ô1°)Ñ<Ô<�	ùðQ(=ð (=rF   c                ó  ‡‡— |r
J d¦   «         ‚|€|�J ‚t          | ¦  «        dk    rd S t          j        | |||g¦  «        }|                     ¦   «         D �]-\  \  }}}}}t	          t
          t                   |¦  «        }t	          t
          t                   |¦  «        }t	          t
          t                   |¦  «        }t	          t
          t                   |¦  «        }|
ot          d„ |D ¦   «         ¦  «        }|rt          ||||‰|‰|	d|||||¬¦  «         ŒÆ|rt          |||¦  «         |rt          j        |¦  «        }t          j                             ¦   «         s9|d         j        r,t          j        |t          j        dd¬¦  «        d¬	¦  «         nt          j        |d
¦  «         |dk    r1|rt          j        |||¬	¦  «         nt          j        |||¬	¦  «        }ˆˆfd„|D ¦   «         }t          j        |||d
¬¦  «         t          j        |¦  «        }t          j        ||	¦  «         |dk    s|rt          j        ||¦  «         |}nt          j        ||¦  «        }t          j        |||¦  «         �Œ/d S )Nz#_foreach ops don't support autogradr   c              3   ó$   K  — | ]}|j         V — Œd S rh   )rY   )rp   rW   s     rE   rr   z(_multi_tensor_adagrad.<locals>.<genexpr>¤  s5   è è € ð 9
ð 9
Ø#ˆDŒNð9
ð 9
ð 9
ð 9
ð 9
ð 9
rF   Trt   g      ð?Úcpu)r)   rƒ   r   c                 óH   •— g | ]}‰ d t          |¦  «        d z
  ‰z  z   z  ‘ŒS )r   )r   )rp   r+   r   r   s     €€rE   ú
<listcomp>z)_multi_tensor_adagrad.<locals>.<listcomp>Ö  sD   ø€ ð 
ð 
ð 
Ø>BˆRˆC�1�
 4Ñ(Ô(¨1Ñ,°Ñ8Ñ8Ñ9ð
ð 
ð 
rF   r†   )rL   r   Ú"_group_tensors_by_device_and_dtyperK   r   r   r   Úanyrz   r   r8   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r:   Ú_foreach_addÚ_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   r\   r]   r^   rc   rd   r   r    r   r"   r_   r   r   r`   Úgrouped_tensorlistsÚdevice_params_Údevice_grads_Údevice_state_sums_Údevice_state_steps_r{   Údevice_paramsÚdevice_gradsÚdevice_state_sumsÚdevice_state_stepsÚdevice_has_sparse_gradÚ	minus_clrr›   Ú	numerators         ` `                   rE   ry   ry   ~  s1  øø€ ð" ÐDÐDÐDÑDÔDÐØÐ )Ð"3Ð"3Ð3õ ˆ6�{„{�aÒÐØˆå#ÔFØ	�˜
 KÐ0ñô Ðð  ×&Ò&Ñ(Ô(ðM?ñ M?ñ 		ñ 	ØØØØØÝ�T¥&œ\¨>Ñ:Ô:ˆÝ�D¥œL¨-Ñ8Ô8ˆÝ ¥¥f¤Ð/AÑBÔBÐÝ!¥$¥v¤,Ð0CÑDÔDÐà!0ð "
µSð 9
ð 9
Ø'3ð9
ñ 9
ô 9
ñ 6
ô 6
Ðð "ð 	Ý"ØØØ!Ø"ØØ)Ø!ØØ $Ø!Ø-Ø'Ø%Ø#ðñ ô ð ð  ð ð 	JÝ˜-¨Ð7HÑIÔIÐIàð 	<Ý Ô-¨lÑ;Ô;ˆLõ Œ~×*Ò*Ñ,Ô,ð 	7Ð1CÀAÔ1FÔ1Mð 	7ÝÔØ"¥E¤L°¸UÐ$CÑ$CÔ$CÈ3ðñ ô ð ð õ ÔÐ 2°AÑ6Ô6Ð6à˜1ÒÐàð ÝÔ# L°-À|ÐTÑTÔTÐTÐTå$Ô1Ø  -°|ð ñ  ô  �ð
ð 
ð 
ð 
ð 
ØFXð
ñ 
ô 
ˆ	õ 	ÔÐ 1°<ÀÐUVÐWÑWÔWÐWåÔ!Ð"3Ñ4Ô4ˆÝÔ˜C Ñ%Ô%Ð%à˜1ÒÐ ÐåÔ ¨iÑ8Ô8Ð8Ø$ˆIˆIåÔ*¨<¸ÑCÔCˆIåÔ ¨y¸#Ñ>Ô>Ð>Ñ>ð[M?ð M?rF   Úreturnc                ór  — | sd S |
s|rt          d¦  «        ‚|rt          d¦  «        ‚|�	|j        |ind }|�	|j        |ind }t          j        | |||g¦  «        }|                     ¦   «         D �]F\  \  }}\  \  }}}}}t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }d\  }}|�(|�&||vr|                     |d¬¦  «        ||<   ||         }|�(|�&||vr|                     |d¬¦  «        ||<   ||         }t          j
        |d¦  «         t          j        ||||||||	|||¬¦  «         |�&t          j        ||gt          |¦  «        z  ¦  «         �ŒHd S )Nz5`fused` does not support sparse grad or complex paramz<adagrad with fused=True does not support differentiable=True)NNT)Únon_blockingr   )r   r   r    r"   r   rc   rd   )r4   r)   r   r¢   Úitemsr   r   r   Útor8   r¨   Ú_fused_adagrad_Ú_foreach_sub_rL   )r   r\   r]   r^   rc   rd   r   r    r   r"   r_   r   r   r`   Úgrad_scale_dictÚfound_inf_dictÚgrouped_tensorsr)   r{   r°   r±   r²   r³   r´   rµ   r¶   r·   Údevice_grad_scaleÚdevice_found_infs                                rE   rx   rx   é  sC  € ð" ð ØˆØð T˜+ð TÝÐRÑSÔSÐSàð 
ÝØJñ
ô 
ð 	
ð
 ,6Ð+AˆÔ	˜JÐ'Ð'Àtð ð 7@Ð6K�iÔ&¨	Ð2Ð2ÐQU€NåÔBØ	�˜
 KÐ0ñô €Oð 
×	Ò	Ñ	 Ô	 ð(ñ (ñ 	‰ˆ�ñ ñ	
ØØØØà	å�T¥&œ\¨>Ñ:Ô:ˆÝ�D¥œL¨-Ñ8Ô8ˆÝ ¥¥f¤Ð/AÑBÔBÐÝ!¥$¥v¤,Ð0CÑDÔDÐà.8Ñ+ÐÐ+ØÐ! oÐ&AØ˜_Ð,Ð,Ø*4¯-ª-¸ÈT¨-Ñ*RÔ*R� Ñ'Ø /°Ô 7ÐØÐ  ^Ð%?Ø Ð.Ð.Ø)2¯ª°fÈ4¨Ñ)PÔ)P�˜vÑ&Ø-¨fÔ5ÐÝÔÐ.°Ñ2Ô2Ð2ÝÔØØØØØØØ%ØØØ(Ø&ð	
ñ 	
ô 	
ð 	
ð Ð'ÝÔØ"Ð%5Ð$6½Ð=OÑ9PÔ9PÑ$Pñô ð ùðM(ð (rF   )NNNFNFF)Útypingr   r   r   r   r8   r   Ú	optimizerr	   r
   r   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rl   rN   r   r�   rz   ry   rx   r%   rF   rE   ú<module>rË      sÙ  ðà .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð  �iÐ
 €ðbð bð bð bð bˆiñ bô bð bðLð4à	ðð ð 
ðð ð 
ðð ð 
ðð ð ñ5.ð „ðp !Ø#'Ø"&ð "Ø"Ø ØðGð GØ�ŒLðGà�Œ<ðGð �V”ðGð �f”ð	Gð
 �DŒ>ðGð ˜Ô ðGð ˜ÔðGð ðGð �dŒ^ðGð ðGð ðGð 	ðGð  ð!Gð" ð#Gð$ 
ð%Gð& ð'Gð Gð Gð GðT?ð ?ð ?ð
:=Ø�ŒLð:=à�Œ<ð:=ð �V”ð:=ð �f”ð	:=ð
 ˜Ô ð:=ð ˜Ôð:=ð 	ð:=ð ð:=ð ð:=ð 
ð:=ð ð:=ð ð:=ð ð:=ð ð:=ð :=ð :=ð :=ðzh?Ø�ŒLðh?à�Œ<ðh?ð �V”ðh?ð �f”ð	h?ð
 ˜Ô ðh?ð ˜Ôðh?ð 	ðh?ð ðh?ð ðh?ð 
ðh?ð ðh?ð ðh?ð ðh?ð ðh?ð h?ð h?ð h?ðVKØ�ŒLðKà�Œ<ðKð �V”ðKð �f”ð	Kð
 ˜Ô ðKð ˜ÔðKð 	ðKð ðKð ðKð 
ðKð ðKð ðKð ðKð ðKð  
ð!Kð Kð Kð Kð Kð KrF   