o
    e5                     @   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   RD:\Projects\ConvertPro\env\Lib\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 r-| 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   Zsgdr	   ZlossscaleoptimizerZlossscaleoptimizerv1
class_namer   )Zmodule_objectscustom_objectsZprintable_module_name)Z'tensorflow.python.keras.mixed_precisionr   adadelta_v2ZAdadelta
adagrad_v2ZAdagradadam_v2ZAdam	adamax_v2ZAdamaxnadam_v2ZNadam
rmsprop_v2ZRMSpropgradient_descent_v2ZSGDr	   ZFtrlZLossScaleOptimizerlowerr   )configr   r   Zall_classesr   r   r   deserialize<   s(   r#   zkeras.optimizers.getc                 C   sv   t | ttjfr
| S t | tjrt| }t| |S t | tr$t	| S t | t
r4t
| i d}t	|S td| )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: {})
isinstancer   r   ZOptimizerV2tf_optimizer_moduler   r   Ztrack_tf_optimizerdictr#   str
ValueErrorformat)
identifieroptr"   r   r   r   gete   s   


r,   )N)"__doc__Ztensorflow.python.kerasr   Z$tensorflow.python.keras.optimizer_v1r   r   Z$tensorflow.python.keras.optimizer_v2r   r   r   r   r   r   r   r   r	   r
   r    r   r   r   r   r   Z+tensorflow.python.keras.utils.generic_utilsr   r   Ztensorflow.python.trainingr   r%   Z tensorflow.python.util.tf_exportr   r   r#   r,   r   r   r   r   <module>   s.   
(