a
    Sicf%                     @   sD  d Z ddlm  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  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Z0 ddl)m1Z2 ddl)mZ3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlDmFZF ddlGmHZH eHddd ZIeHd d&d!d"ZJeHd#d$d% ZKdS )'zcBuilt-in optimizer classes.

For more examples see the base class `tf.keras.optimizers.Optimizer`.
    N)backend)adadelta)adagrad)adam)adamax)ftrl)nadam	optimizer)rmsprop)sgd)adamw)	Optimizer)TFOptimizer)gradient_descent)optimizer_v2)Adadelta)Adagrad)Adam)Adamax)Ftrl)SGD)Nadam)RMSprop)deserialize_keras_objectserialize_keras_object)keras_exportzkeras.optimizers.serializec                 C   s   t | S )aV  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   U/var/www/html/django/DPS/env/lib/python3.9/site-packages/keras/optimizers/__init__.py	serializeV   s    r    zkeras.optimizers.deserializec                 K   s  ddl m} |dd}t| d dkr8| d dd}tjj rt	 r|st
jtjtjtjt
jtjtjtjtjtjtjtj|j|j|jd}nBtjtjtjtjt
jtjtjtjt jt!jt"jt#j|j|j|jd}| d $ |v r| d $ | d< t%| ||d	d
S )aE  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use_legacy_optimizerTconfigZis_legacy_optimizer)r   r   r   r   ZexperimentaladadeltaZexperimentaladagradZexperimentaladamZexperimentalsgdr   r   r   r   lossscaleoptimizerZlossscaleoptimizerv3lossscaleoptimizerv1
class_namer
   )module_objectscustom_objectsprintable_module_name)&Zkeras.mixed_precisionr!   poplengettf__internal__tf2enabledexecuting_eagerlyadadelta_experimentalr   adagrad_experimentalr   adam_experimentalr   adamax_experimentalr   sgd_experimentalr   nadam_experimentalr   rmsprop_experimentalr   ftrl_experimentalr   ZLossScaleOptimizerV3LossScaleOptimizeradadelta_v2
adagrad_v2adam_v2	adamax_v2nadam_v2
rmsprop_v2gradient_descent_v2r   lowerr   )r#   r(   kwargsr!   r"   all_classesr   r   r   deserializek   sd    
rE   zkeras.optimizers.getc                 K   s   | dd}t| ttjtjfr$| S t| tjjj	jrLt
| }t| |S t| trbt| |dS t| trt| i d}t||d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"   T)r"   )r&   r#   z*Could not interpret optimizer identifier: N)r*   
isinstancer   base_optimizer_v2OptimizerV2optimizer_experimentalr-   compatv1trainr   r   track_tf_optimizerdictrE   str
ValueError)
identifierrC   r"   optr#   r   r   r   r,      s.    


r,   )N)L__doc__tensorflow.compat.v2rJ   v2r-   kerasr   Zkeras.optimizers.legacyr   Zadadelta_legacyr   Zadagrad_legacyr   Zadam_legacyr   Zadamax_legacyr   Zftrl_legacyr   Znadam_legacyr
   Zoptimizer_legacyr   Zrmsprop_legacyr   Z
sgd_legacy'keras.optimizers.optimizer_experimentalr2   r3   r4   r5   r   Zadamw_experimentalr9   r7   rI   r8   r6   Zkeras.optimizers.optimizer_v1r   r   Zkeras.optimizers.optimizer_v2r;   r<   r=   r>   r   rA   r?   r   rG   r@   Z&keras.optimizers.optimizer_v2.adadeltar   Z%keras.optimizers.optimizer_v2.adagradr   Z"keras.optimizers.optimizer_v2.adamr   Z$keras.optimizers.optimizer_v2.adamaxr   Z"keras.optimizers.optimizer_v2.ftrlr   Z.keras.optimizers.optimizer_v2.gradient_descentr   Z#keras.optimizers.optimizer_v2.nadamr   Z%keras.optimizers.optimizer_v2.rmspropr   Zkeras.utils.generic_utilsr   r    tensorflow.python.util.tf_exportr   r    rE   r,   r   r   r   r   <module>   sb   
Q