§
    �ŠtjŠY  ã            #       óè  — d dl 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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dz  dedz  dedz  dededz  dedededededededdf"d „Zd!„ Zdee         dee         dee         dee         dedz  dedz  dededededededededdfd"„Zdee         dee         dee         dee         dedz  dedz  dededededededededdfd#„Zdee         dee         dee         dee         dedz  dedz  deez  dedededededededdfd$„ZdS )&é    )ÚcastN)ÚTensoré   )Ú_default_to_fused_or_foreachÚ_device_dtype_check_for_fusedÚ_differentiable_docÚ_foreach_docÚ_get_scalar_dtypeÚ
_get_valueÚ_maximize_docÚ_params_docÚ
_to_scalarÚ_use_grad_for_differentiableÚ_view_as_realÚ
DeviceDictÚ	OptimizerÚParamsTÚAdagradÚadagradc                   ó¦   ‡ — e Zd Z	 	 	 	 	 	 dddddœdedeez  d	ed
ededededz  dedededz  ddfˆ fd„Zˆ fd„Zd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   Úreturnc          
      óÂ  •— 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|› �¦  «        ‚||||||||	|
d	œ	}t	          ¦   «                              ||¦  «         |
r0|	rt          d
¦  «        ‚|rt          d¦  «        ‚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-elementç        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ÚsuperÚ__init__ÚRuntimeErrorÚ"_need_device_dtype_check_for_fusedÚ_step_supports_amp_scalingÚ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Úpr:   Ú
init_valueÚ	__class__s                   €úQ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/optim/adagrad.pyr5   zAdagrad.__init__   sk  ø€ õ �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Ð<Ð<Ñ=Ô=Ð=ð Ø ØØ(Ø)BØØ Ø,Øð

ð 

ˆõ 	‰Œ×Ò˜ Ñ*Ô*Ð*àð 	3Øð PÝ"Ð#NÑOÔOÐOØð WÝ"Ð#UÑVÔVÐVØ6:ˆDÔ3Ø.2ˆDÔ+àÔ&ð 	ð 	ˆ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                 óÌ  •— t          ¦   «                              |¦  «         d }| j        D �]}|                     dd ¦  «         |                     dd¦  «         |                     dd¦  «         |                     dd ¦  «        }|d         D ]¶}| j                             |g ¦  «        }t          |¦  «        dk    r†t          j        |d         ¦  «        slt          |d         ¦  «        }|d         r*t          j
        |t          |¬	¦  «        |j        ¬
¦  «        n!t          j
        |t          ¦   «         ¬¦  «        |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'   r)   r,   )r4   Ú__setstate__r9   Ú
setdefaultr:   ÚgetÚlenr;   Ú	is_tensorÚfloatr=   r
   r+   ÚlistÚvalues)rB   r:   r   rD   rE   Úp_stateÚstep_valÚstate_valuesÚstep_is_tensorÚsrG   s             €rH   rK   zAdagrad.__setstate__d   s  ø€ Ý‰Œ×Ò˜UÑ#Ô#Ð#ð ˆØÔ&ð 	ñ 	ˆEØ×Ò˜Y¨Ñ-Ô-Ð-Ø×Ò˜Z¨Ñ/Ô/Ð/Ø×ÒÐ-¨uÑ5Ô5Ð5Ø×$Ò$ W¨dÑ3Ô3ˆEà˜8”_ð ð �Øœ*Ÿ.š.¨¨BÑ/Ô/�Ý�w‘<”< 1Ò$Ð$­U¬_¸WÀV¼_Ñ-MÔ-MÐ$Ý$ W¨V¤_Ñ5Ô5�Hð ! œ>ðO�œØ$Ý"3¸UÐ"CÑ"CÔ"CØ#$¤8ðñ ô ð õ #œ\¨(Õ:KÑ:MÔ:MÐNÑNÔNð ˜F‘Oøñ	õ ˜DœJ×-Ò-Ñ/Ô/Ñ0Ô0ˆÝ˜lÑ+Ô+¨qÒ0ð 
µe´oØ˜ŒO˜FÔ#ñ7
ô 7
ˆð ð 	Ø!ð ð �Ý!œLÝ˜!˜Fœ)Ñ$Ô$Õ,=ÀuÐ,MÑ,MÔ,Mðñ ô ��&‘	�	ð	ð 	ðð rI   c                 ó~   — | j         D ]4}|d         D ])}| j        |         }|d                              ¦   «          Œ*Œ5dS )z6Calls tensor.share_memory_() on the state sum tensors.r   r0   N)r9   r:   Úshare_memory_)rB   rD   rE   r:   s       rH   Úshare_memoryzAdagrad.share_memory‡   sZ   € àÔ&ð 	-ð 	-ˆEØ˜8”_ð -ð -�Øœ
 1œ�Ø�e”×*Ò*Ñ,Ô,Ð,Ð,ð-ð	-ð 	-rI   c                 óˆ  — d\  }}|d         D �]°}|j         ��¥|d         r't          | dd¦  «        rt          |¦  «         d| _        ||j         j        z  }|t          j        |¦  «        z  }|                     |¦  «         |                     |j         ¦  «         | j        |         }	t          |	¦  «        dk    rË|d         rt          |¦  «         |d         r0t          j
        dt          |d         ¬	¦  «        |j        ¬
¦  «        n!t          j        dt          ¦   «         ¬¦  «        |	d<   | j        d         }
t          j        |¦  «        rt          |
|
¦  «        n|
}t          j        ||t
          j        ¬¦  «        |	d<   |                     |	d         ¦  «         |                     |	d         ¦  «         �Œ²||fS )N)FFr   r   r7   TFr   r&   r'   r)   r%   r,   r-   r    r.   r0   )ÚgradÚgetattrr   r7   Ú	is_sparser;   r>   Úappendr:   rN   r<   r
   r+   r=   rC   r?   r@   rA   )rB   rD   Úparams_with_gradÚgradsÚ
state_sumsÚstate_stepsÚhas_sparse_gradÚhas_complexrE   r:   r    rF   s               rH   Ú_init_groupzAdagrad._init_groupŽ   sð  € Ø'3Ñ$ˆ˜Ø�x”ð (	2ñ (	2ˆAØŒvÑ!Ø˜”>ð D¥gØØ8Øñ'ô 'ð Dõ
 2°!Ñ4Ô4Ð4Ø>C�DÔ;Ø 1¤6Ô#3Ñ3�Ø�uÔ/°Ñ2Ô2Ñ2�Ø ×'Ò'¨Ñ*Ô*Ð*Ø—’˜QœVÑ$Ô$Ð$Øœ
 1œ�Ý�u‘:”: ’?�?Ø˜W”~ð 9Ý5°aÑ8Ô8Ð8ð ! œ>ðJ�œØÝ"3¸UÀ7¼^Ð"LÑ"LÔ"LØ#$¤8ðñ ô ð õ #œ\¨#Õ5FÑ5HÔ5HÐIÑIÔIð ˜&‘Mð 15´Ø3ô1Ð-õ
 !Ô+¨AÑ.Ô.ð7�Ð 9Ð;TÑUÔUÐUà6ð õ
 $)¤?Ø˜:µUÔ5Jð$ñ $ô $�E˜%‘Lð ×!Ò! %¨¤,Ñ/Ô/Ð/Ø×"Ò" 5¨¤=Ñ1Ô1Ð1ùà Ð+Ð+rI   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!   rd   r"   r   r   re   r   rh   ri   )r;   Úenable_gradr9   rf   r   r]   )
rB   ÚclosureÚlossrD   r`   ra   rb   rc   rd   re   s
             rH   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)r#   N©N)Ú__name__Ú
__module__Ú__qualname__r   rP   r   Úboolr5   rK   rZ   rf   r   r-   Ú__classcell__)rG   s   @rH   r   r      sW  ø€ € € € € ð "ØØØ+,ØØ#ðEð Ø$Ø!ðEð Eð EàðEð �F‰NðEð ð	Eð
 ðEð $)ðEð ðEð ˜‘ðEð ðEð ðEð �d‰{ðEð 
ðEð Eð Eð Eð Eð EðN!ð !ð !ð !ð !ðF-ð -ð -ð -ð,,ð ,,ð ,,ð\ "ð*ð *ð *ñ "Ô!ð*ð *ð *ð *ð *rI   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 and CUDA only) is used.
            Currently, `torch.float64`, `torch.float32`, `torch.float16`, and `torch.bfloat16`
            are supported. (default: None). Please note that the fused implementation does not
            support sparse or complex gradients.
    .. _Adaptive Subgradient Methods for Online Learning and Stochastic
        Optimization: http://jmlr.org/papers/v12/duchi11a.html

    Fr   ra   rb   rc   r   rh   ri   rd   r"   r   re   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 rm   )r1   r;   r   )Ú.0Úts     rH   ú	<genexpr>zadagrad.<locals>.<genexpr>6  s.   è è € Ð@Ð@¨q�z˜!�Uœ\Ñ*Ô*Ð@Ð@Ð@Ð@Ð@Ð@rI   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!   rd   r   r   re   rh   ri   )	Úallr6   r   r;   ÚjitÚis_scriptingÚ_fused_adagradÚ_multi_tensor_adagradÚ_single_tensor_adagrad)r   ra   rb   rc   r   rh   ri   rd   r"   r   re   r   r   r   r!   r   Ú_Úfuncs                     rH   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ØØØØØØ!ØØØ'ØØ%ØØØðñ ô ð ð ð rI   c                 óV   — |                       ¦   «         }t          j        |||¦  «        S rm   )Úsizer;   Úsparse_coo_tensor)r\   Úgrad_indicesrR   rƒ   s       rH   Ú_make_sparser†   g  s$   € Ø�9Š9‰;Œ;€DÝÔ" <°¸Ñ>Ô>Ð>rI   c          
      ó>  — |€|�t          d¦  «        ‚t          j                             ¦   «         st	          |¦  «        }t          | |||d¬¦  «        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 )
Nú,Expected grad_scale and found_inf to be NoneT)Ústrictr   r   z;weight_decay option is not compatible with sparse gradients©Úalphaé   ©Úvalue)ÚAssertionErrorr;   r{   r|   r   Úzipr   r^   r6   ÚaddÚcoalesceÚ_indicesÚ_valuesÚadd_r†   ÚpowÚsparse_maskÚsqrt_r>   Úview_as_realÚaddcmul_ÚsqrtÚaddcdiv_Úview_as_complex)r   ra   rb   rc   rh   ri   r   r   r   r!   rd   r   r   re   Úparamr\   Ú	state_sumÚstep_tr-   Úclrr…   Úgrad_valuesÚstdÚ
std_valuesr>   s                            rH   r   r   l  s¯  € ð" Ð Ð!6ÝÐKÑLÔLÐLåŒ9×!Ò!Ñ#Ô#ð Ý˜‰^Œ^ˆå*-Ø��z ;°tð+ñ +ô +ð *=ñ *=Ñ&ˆˆ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°)Ñ<Ô<�	ùðU*=ð *=rI   c                óP  ‡‡— |rt          d¦  «        ‚|€|�t          d¦  «        ‚t          | ¦  «        dk    rd S t          ‰¦  «        Š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ˆ   r   c              3   ó$   K  — | ]}|j         V — Œd S rm   )r^   )ru   r\   s     rH   rw   z(_multi_tensor_adagrad.<locals>.<genexpr>Ú  s5   è è € ð 9
ð 9
Ø#ˆDŒNð9
ð 9
ð 9
ð 9
ð 9
ð 9
rI   Try   g      ð?Úcpu)r+   rŠ   r   c                 óH   •— g | ]}‰ d t          |¦  «        d z
  ‰z  z   z  ‘ŒS )r   )r   )ru   r-   r   r   s     €€rH   ú
<listcomp>z)_multi_tensor_adagrad.<locals>.<listcomp>  sD   ø€ ð 
ð 
ð 
Ø>BˆRˆC�1�
 4Ñ(Ô(¨1Ñ,°Ñ8Ñ8Ñ9ð
ð 
ð 
rI   r�   )r�   rN   r   r   Ú"_group_tensors_by_device_and_dtyperR   r   rQ   r   Úanyr   r   r;   Ú_foreach_negÚcompilerÚis_compilingÚis_cpuÚ_foreach_add_r=   Ú_foreach_addÚ_foreach_addcmul_Ú_foreach_sqrtÚ_foreach_mul_Ú_foreach_mulÚ_foreach_addcdiv_)r   ra   rb   rc   rh   ri   r   r   r   r!   rd   r   r   re   Ú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         ` `                   rH   r~   r~   °  sH  øø€ ð" ð DÝÐBÑCÔCÐCØÐ Ð!6ÝÐKÑLÔLÐLõ ˆ6�{„{�aÒÐØˆå	�B‰Œ€Bå#Ô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?rI   c                ó>  — | sd S |
s|rt          d¦  «        ‚|rt          d¦  «        ‚|�	|j        |ini }|�	|j        |ini }t          |t          ¦  «        r!t	          |j        ¦  «        dk    r	|j        |ind }t          j        | |||g¦  «        }|                     ¦   «         D �]t\  \  }}\  \  }}}}}t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }t          t          t                   |¦  «        }d\  }}|�+| 
                    ||                     |d¬¦  «        ¦  «        }|�+| 
                    ||                     |d¬¦  «        ¦  «        }|�&||vr"|                     |d¬¦  «        ||<   ||         }t          j        |d¦  «         t          j        ||||||||	|||¬	¦  «         |�&t          j        ||gt!          |¦  «        z  ¦  «         �Œvd S )
Nz5`fused` does not support sparse grad or complex paramz<adagrad with fused=True does not support differentiable=Truer§   )NNT)Únon_blocking)r+   rÄ   r   )r   r   r   r!   r   rh   ri   )r6   r+   r1   r   Ústrr   rª   Úitemsr   rQ   rL   Útor;   r°   Ú_fused_adagrad_Ú_foreach_sub_rN   )r   ra   rb   rc   rh   ri   r   r   r   r!   rd   r   r   re   Úgrad_scale_dictÚfound_inf_dictÚlr_dictÚgrouped_tensorsr+   r€   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   Údevice_grad_scaleÚdevice_found_infs                                 rH   r}   r}     sž  € ð" ð ØˆØð T˜+ð TÝÐRÑSÔSÐSàð 
ÝØJñ
ô 
ð 	
ð
 ,6Ð+AˆÔ	˜JÐ'Ð'Àrð ð *3Ð)>ˆÔ	˜9Ð%Ð%ÀBð õ & b­&Ñ1Ô1ÐWµc¸"¼)±n´nÈÒ6MÐ6MˆŒ�BˆˆÐSWð õ  ÔBØ	�˜
 KÐ0ñô €Oð 
×	Ò	Ñ	 Ô	 ð+ñ +ñ 	‰ˆ�ñ ñ	
ØØØØà	å�T¥&œ\¨>Ñ:Ô:ˆÝ�D¥œL¨-Ñ8Ô8ˆÝ ¥¥f¤Ð/AÑBÔBÐÝ!¥$¥v¤,Ð0CÑDÔDÐà.8Ñ+ÐÐ+ØÐ!Ø /× :Ò :Ø˜
Ÿš f¸4˜Ñ@Ô@ñ!ô !Ðð Ð Ø-×8Ò8Ø˜	Ÿš V¸$˜Ñ?Ô?ñ ô  Ðð Ð 6°Ð#8Ð#8Ø Ÿeše¨6À˜eÑEÔEˆG�F‰OØ˜”ˆBÝÔÐ.°Ñ2Ô2Ð2ÝÔØØØØØØØ%ØØØ(Ø&ð	
ñ 	
ô 	
ð 	
ð Ð'ÝÔØ"Ð%5Ð$6½Ð=OÑ9PÔ9PÑ$Pñô ð ùðS+ð +rI   )NNNFNFF)Útypingr   r;   r   Ú	optimizerr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Ú__all__r   Ú__doc__rQ   rq   rP   r   r†   r   r~   r}   r&   rI   rH   ú<module>rÔ      s
  ðà Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ �iÐ
 €ðKð Kð Kð Kð Kˆiñ Kô Kð Kð^ð4à	ðð ð 
ðð ð 
ðð ð 
ðð ð ñ5.ð „ðp Ø $Ø#ð "ØØ ØðGð GØ�ŒLðGà�Œ<ðGð �V”ðGð �f”ð	Gð
 �$‰;ðGð ˜‘ðGð ˜‰}ðGð ðGð �D‰[ðGð ðGð ðGð 	ðGð  ð!Gð" ð#Gð$ 
ð%Gð& ð'Gð( 
ð)Gð Gð Gð GðT?ð ?ð ?ð
A=Ø�ŒLðA=à�Œ<ðA=ð �V”ðA=ð �f”ð	A=ð
 ˜‘ðA=ð ˜‰}ðA=ð 	ðA=ð ðA=ð ðA=ð 
ðA=ð ðA=ð ðA=ð ðA=ð ðA=ð  
ð!A=ð A=ð A=ð A=ðHl?Ø�ŒLðl?à�Œ<ðl?ð �V”ðl?ð �f”ð	l?ð
 ˜‘ðl?ð ˜‰}ðl?ð 	ðl?ð ðl?ð ðl?ð 
ðl?ð ðl?ð ðl?ð ðl?ð ðl?ð  
ð!l?ð l?ð l?ð l?ð^SØ�ŒLðSà�Œ<ðSð �V”ðSð �f”ð	Sð
 ˜‘ðSð ˜‰}ðSð 	�‰ðSð ðSð ðSð 
ðSð ðSð ðSð ðSð ðSð  
ð!Sð Sð Sð Sð Sð SrI   