Ë
    BÆVhP  ã                   ó    — d 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  ed	g¬
«       G d„ de	j                  «      «       Zy)zGradientDescent for TensorFlow.é    )Úindexed_slices)Úops)Úgen_training_ops)Úmath_ops)Úresource_variable_ops)Ú	optimizer)Ú	tf_exportztrain.GradientDescentOptimizer)Úv1c                   óB   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	ˆ xZ
S )	ÚGradientDescentOptimizerz<Optimizer that implements the gradient descent algorithm.
  c                 óJ   •— t         t        |   ||«       || _        d| _        y)as  Construct a new gradient descent optimizer.

    Args:
      learning_rate: A Tensor or a floating point value.  The learning
        rate to use.
      use_locking: If True use locks for update operations.
      name: Optional name prefix for the operations created when applying
        gradients. Defaults to "GradientDescent".

    @compatibility(eager)
    When eager execution is enabled, `learning_rate` can be a callable that
    takes no arguments and returns the actual value to use. This can be useful
    for changing these values across different invocations of optimizer
    functions.
    @end_compatibility
    N)Úsuperr   Ú__init__Ú_learning_rateÚ_learning_rate_tensor)ÚselfÚlearning_rateÚuse_lockingÚnameÚ	__class__s       €ú[/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/training/gradient_descent.pyr   z!GradientDescentOptimizer.__init__   s'   ø€ ô" 
Ô
" DÑ2°;ÀÔEØ'€DÔØ!%€DÕó    c                 óÀ   — t        j                  |t        j                  | j                  |j
                  j                  «      || j                  ¬«      j                  S ©N)r   )	r   Úapply_gradient_descentr   Úcastr   ÚdtypeÚ
base_dtypeÚ_use_lockingÚop)r   ÚgradÚvars      r   Ú_apply_densez%GradientDescentOptimizer._apply_dense4   sI   € Ü×2Ñ2ØÜ‰d×0Ñ0°#·)±)×2FÑ2FÓGØØ×%Ñ%ô	'÷ (*¡rð	*r   c                 óÀ   — t        j                  |j                  t        j                  | j
                  |j                  j                  «      || j                  ¬«      S r   )	r   Úresource_apply_gradient_descentÚhandler   r   r   r   r   r   )r   r!   r&   s      r   Ú_resource_apply_densez.GradientDescentOptimizer._resource_apply_dense;   sG   € Ü×;Ñ;Ø‰”x—}‘} T×%?Ñ%?Ø%)§Z¡Z×%:Ñ%:ó<à˜$×+Ñ+ô-ð -r   c           	      ó°   — t        j                  |j                  || t        j                  | j
                  |j                  j                  «      z  «      S )N)r   Úresource_scatter_addr&   r   r   r   r   r   )r   r!   r&   Úindicess       r   Ú(_resource_apply_sparse_duplicate_indiceszAGradientDescentOptimizer._resource_apply_sparse_duplicate_indicesA   sI   € Ü ×5Ñ5Ø‰ØØ	ˆ”—‘˜d×8Ñ8Ø"Ÿj™j×3Ñ3ó5ñ 	5ó6ð 6r   c                 ó  — t        j                  |j                  t        j                  | j
                  |j                  j                  «      z  |j                  |j                  «      }|j                  || j                  ¬«      S r   )r   ÚIndexedSlicesÚvaluesr   r   r   r   r   r*   Údense_shapeÚscatter_subr   )r   r!   r"   Údeltas       r   Ú_apply_sparse_duplicate_indicesz8GradientDescentOptimizer._apply_sparse_duplicate_indicesH   sg   € Ü×(Ñ(Ø‰Ü‰d×0Ñ0°#·)±)×2FÑ2FÓGñ	Hà‰d×&Ñ&ó(€Eð ?‰?˜5¨d×.?Ñ.?ˆ?Ó@Ð@r   c                 ór   — | j                  | j                  «      }t        j                  |d¬«      | _        y )Nr   )r   )Ú_call_if_callabler   r   Úconvert_to_tensorr   )r   r   s     r   Ú_preparez!GradientDescentOptimizer._prepareO   s0   € Ø×*Ñ*¨4×+>Ñ+>Ó?€MÜ!$×!6Ñ!6Ø˜Oô"-€DÕr   )FÚGradientDescent)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r#   r'   r+   r2   r6   Ú__classcell__)r   s   @r   r   r      s'   ø„ ñõ&ò**ò-ò6òAö-r   r   N)r;   Útensorflow.python.frameworkr   r   Útensorflow.python.opsr   r   r   Útensorflow.python.trainingr   Ú tensorflow.python.util.tf_exportr	   Ú	Optimizerr   © r   r   ú<module>rC      sI   ðñ  &Ý 6Ý +Ý 2Ý *Ý 7Ý 0Ý 6ñ Ð/Ð0Ô1ô7-˜y×2Ñ2ó 7-ó 2ñ7-r   