a
    0Sic                     @   s   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dlmZ eddd ZeddddZ eddd Z!dS )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	optimizer)keras_exportzkeras.optimizers.serializec                 C   s   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    r   ^/var/www/html/django/DPS/env/lib/python3.9/site-packages/tensorflow/python/keras/optimizers.py	serialize'   s    r   zkeras.optimizers.deserializeNc                 C   sj   ddl m} tjtjtjtj	t
jtjtjtj|j|jd
}| d  |v rZ| d  | d< t| ||d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	   ZlossscaleoptimizerZ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_v2ZNadam
rmsprop_v2RMSpropgradient_descent_v2SGDr	   ZFtrlLossScaleOptimizerlowerr   )configr   r   Zall_classesr   r   r   deserialize<   s(    r.   zkeras.optimizers.getc                 C   sz   t | ttjfr| S t | tjr6t| }t| |S t | trHt	| S t | t
rht
| i d}t	|S td| dS )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   r-   z,Could not interpret optimizer identifier: {}N)
isinstancer   r   OptimizerV2tf_optimizer_moduler   r   track_tf_optimizerdictr.   str
ValueErrorformat)
identifieroptr-   r   r   r   gete   s    


r9   )N)"__doc__tensorflow.python.kerasr   Z$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   r1    tensorflow.python.util.tf_exportr   r   r.   r9   r   r   r   r   <module>   s,   
(