§
    �Štj²  ã                   ó  — d Z ddlZddlmZ ddlmZ ddlmZmZ ddlmZ ddlmZ dd	l	m	Z	 dd
l
m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ 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dfd„ZdS )zFunctional interface.é    N)ÚTensoré   )Úadadelta)Ú_make_sparseÚadagrad)Úadam)Úadamax)Úadamw)Úasgd)Únadam)Úradam)Úrmsprop)Úrprop)ÚsgdÚparamsÚgradsÚexp_avgsÚexp_avg_sqsÚstate_stepsÚepsÚbeta1Úbeta2ÚlrÚmaximizeÚreturnc          	      ó²  ‡‡‡— t          | ¦  «        D �]B\  }
}||
         Š|	s‰n‰ Š‰                     ¦   «         Š‰                     ¦   «         Š‰                     ¦   «         }|                     ¦   «         dk    rŒj‰                     ¦   «         Š||
         }||
         }||
         }ˆˆˆfd„}|                     ‰¦  «                             ¦   «         }|                     |¦  «                             d|z
  ¦  «        }| 	                     ||¦  «        ¦  «         |                     ‰¦  «                             ¦   «         }| 
                    d¦  «                             |¦  «                             d|z
  ¦  «        }| 	                     ||¦  «        ¦  «         | 	                    |¦  «        }| 	                    |¦  «         |                     ¦   «          	                    |¦  «        }~~d||z  z
  }d||z  z
  }|t          j        |¦  «        z  |z  }| 	                     || |                     |¦  «        z  ¦  «        ¦  «         �ŒDdS )z{Functional API that performs Sparse Adam algorithm computation.

    See :class:`~torch.optim.SparseAdam` for details.
    r   c                 óÆ   •— ‰j         }‰                     ¦   «         dk    s|                      ¦   «         dk    r |¦   «                              ‰¦  «        S  |‰| ‰¦  «        S )Nr   )ÚnewÚdimÚ
resize_as_)ÚvaluesÚconstructorÚgradÚgrad_indicesÚsizes     €€€úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/optim/_functional.pyÚmake_sparsez sparse_adam.<locals>.make_sparse8   sa   ø€ Øœ(ˆKØ×ÒÑ!Ô! QÒ&Ð&¨&¯*ª*©,¬,¸!Ò*;Ð*;Ø"�{‘}”}×/Ò/°Ñ5Ô5Ð5Ø�;˜|¨V°TÑ:Ô:Ð:ó    r   é   N)Ú	enumerateÚcoalesceÚ_indicesÚ_valuesÚnumelr%   Úsparse_maskÚsubÚmul_Úadd_ÚpowÚsub_Úsqrt_ÚmathÚsqrtÚdiv_)r   r   r   r   r   r   r   r   r   r   ÚiÚparamÚgrad_valuesÚexp_avgÚ
exp_avg_sqÚstepr'   Úold_exp_avg_valuesÚexp_avg_update_valuesÚold_exp_avg_sq_valuesÚexp_avg_sq_update_valuesÚnumerÚdenomÚbias_correction1Úbias_correction2Ú	step_sizer#   r$   r%   s                             @@@r&   Úsparse_adamrH      sg  øøø€ õ" ˜fÑ%Ô%ð +@ñ +@‰ˆˆ5Ø�QŒxˆØ#Ð.ˆtˆt¨$¨ˆØ�}Š}‰ŒˆØ—}’}‘”ˆØ—l’l‘n”nˆØ×ÒÑÔ !Ò#Ð#àØ�yŠy‰{Œ{ˆà˜1”+ˆØ  ”^ˆ
Ø˜1Œ~ˆð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð %×0Ò0°Ñ6Ô6×>Ò>Ñ@Ô@ÐØ +§¢Ð0BÑ CÔ C× HÒ HÈÈUÉÑ SÔ SÐØ�Š�[�[Ð!6Ñ7Ô7Ñ8Ô8Ð8Ø *× 6Ò 6°tÑ <Ô <× DÒ DÑ FÔ FÐà�OŠO˜AÑÔ×#Ò#Ð$9Ñ:Ô:×?Ò?ÀÀEÁ	ÑJÔJð 	!ð 	�Š˜˜Ð$<Ñ=Ô=Ñ>Ô>Ð>ð &×*Ò*Ð+=Ñ>Ô>ˆØ ×%Ò%Ð&;Ñ<Ô<Ð<Ø(×.Ò.Ñ0Ô0×5Ò5°cÑ:Ô:ˆØ!Ð#;à˜u d™{™?ÐØ˜u d™{™?ÐØ�œÐ#3Ñ4Ô4Ñ4Ð7GÑGˆ	à�
Š
�;�; 	˜z¨E¯JªJ°uÑ,=Ô,=Ñ=Ñ>Ô>Ñ?Ô?Ð?Ñ?ðW+@ð +@r(   )Ú__doc__r6   Útorchr   r   r   r   r   r	   r
   r   r   r   r   r   r   ÚlistÚintÚfloatÚboolrH   © r(   r&   ú<module>rP      sŸ  ðà Ð à €€€à Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð<@Ø�ŒLð<@à�Œ<ð<@ð �6Œlð<@ð �f”ð	<@ð
 �c”ð<@ð 
ð<@ð ð<@ð ð<@ð 	ð<@ð ð<@ð 
ð<@ð <@ð <@ð <@ð <@ð <@r(   