B
    ӻd                 @   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   T/var/www/html/venv/lib/python3.7/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  |k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   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   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   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(   (