
    BVh                         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 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 ZddZd Zy)zcBuilt-in optimizer classes.

For more examples see the base class `tf.keras.optimizers.Optimizer`.
    )backend)	Optimizer)TFOptimizer)adadelta)adagrad)adam)adamax)ftrl)gradient_descent)nadam)optimizer_v2)rmsprop)deserialize_keras_objectserialize_keras_object	optimizerc                     t        |       S )a@  Serialize the optimizer configuration to JSON compatible python dict.

  The configuration can be used for persistence and reconstruct the `Optimizer`
  instance again.

  >>> tf.keras.optimizers.serialize(tf.keras.optimizers.SGD())
  {'class_name': 'SGD', 'config': {'name': 'SGD', 'learning_rate': 0.01,
                                   'decay': 0.0, 'momentum': 0.0,
                                   'nesterov': False}}

  Args:
    optimizer: An `Optimizer` instance to serialize.

  Returns:
    Python dict which contains the configuration of the input optimizer.
  r   r   s    R/home/dcms/DCMS/lib/python3.12/site-packages/tensorflow/python/keras/optimizers.py	serializer   &   s    " 
 		**    Nc                    ddl m} t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t         j"                  |j$                  |j$                  d
}| d   j'                         |v r| d   j'                         | d<   t)        | ||d      S )a-  Inverse of the `serialize` function.

  Args:
      config: Optimizer configuration dictionary.
      custom_objects: Optional dictionary mapping names (strings) to custom
        objects (classes and functions) to be considered during deserialization.

  Returns:
      A Keras Optimizer instance.
  r   )loss_scale_optimizer)
r   r   r   r	   r   r   sgdr
   lossscaleoptimizerlossscaleoptimizerv1
class_namer   )module_objectscustom_objectsprintable_module_name)'tensorflow.python.keras.mixed_precisionr   adadelta_v2Adadelta
adagrad_v2Adagradadam_v2Adam	adamax_v2Adamaxnadam_v2Nadam
rmsprop_v2RMSpropgradient_descent_v2SGDr
   FtrlLossScaleOptimizerlowerr   )configr   r   all_classess       r   deserializer5   :   s     K&&##ll  ~~## $$ii0CC 3EE+" L![0!,/557F<	! #'	
) )r   c                 z   t        | t        t        j                  f      r| S t        | t        j                        r"t        |       }t        j                  |       |S t        | t              rt        |       S t        | t              rt        |       i d}t        |      S t        dj                  |             )a  Retrieves a Keras Optimizer instance.

  Args:
      identifier: Optimizer identifier, one of
          - String: name of an optimizer
          - Dictionary: configuration dictionary. - Keras Optimizer instance (it
            will be returned unchanged). - TensorFlow Optimizer instance (it
            will be wrapped as a Keras Optimizer).

  Returns:
      A Keras Optimizer instance.

  Raises:
      ValueError: If `identifier` cannot be interpreted.
  )r   r3   z,Could not interpret optimizer identifier: {})
isinstancer   r   OptimizerV2tf_optimizer_moduler   r   track_tf_optimizerdictr5   str
ValueErrorformat)
identifieroptr3   s      r   getrA   b   s      
Y(@(@AB*1;;<
j
!Cs#J*d#z""*c"
Or:Fv
6==jIK Kr   )N) __doc__tensorflow.python.kerasr   $tensorflow.python.keras.optimizer_v1r   r   $tensorflow.python.keras.optimizer_v2r   r"   r   r$   r   r&   r	   r(   r
   r   r.   r   r*   r   r   r,   +tensorflow.python.keras.utils.generic_utilsr   r   tensorflow.python.trainingr   r9   r   r5   rA    r   r   <module>rI      sJ    
 , : < H F @ D 5 X B = F P N G+(%)PKr   