B
    d                 @   s   d Z ddlm  mZ ddlmZ dadada	edej
jjdd	 Zed
dd Zeddd Zeddd Zedej
jjdd Zeddd ZdS )zKeras backend config API.    N)keras_exportfloat32gHz>channels_lastzkeras.backend.epsilonc               C   s   t S )zReturns the value of the fuzz factor used in numeric expressions.

    Returns:
        A float.

    Example:
    >>> tf.keras.backend.epsilon()
    1e-07
    )_EPSILON r   r   F/var/www/html/venv/lib/python3.7/site-packages/keras/backend_config.pyepsilon    s    r   zkeras.backend.set_epsilonc             C   s   | a dS )a9  Sets the value of the fuzz factor used in numeric expressions.

    Args:
        value: float. New value of epsilon.

    Example:
    >>> tf.keras.backend.epsilon()
    1e-07
    >>> tf.keras.backend.set_epsilon(1e-5)
    >>> tf.keras.backend.epsilon()
    1e-05
     >>> tf.keras.backend.set_epsilon(1e-7)
    N)r   )valuer   r   r   set_epsilon/   s    r
   zkeras.backend.floatxc               C   s   t S )zReturns the default float type, as a string.

    E.g. `'float16'`, `'float32'`, `'float64'`.

    Returns:
        String, the current default float type.

    Example:
    >>> tf.keras.backend.floatx()
    'float32'
    )_FLOATXr   r   r   r   floatxB   s    r   zkeras.backend.set_floatxc             C   s2   dddh}| |kr&t d|  d| t| adS )a  Sets the default float type.

    Note: It is not recommended to set this to float16 for training, as this
    will likely cause numeric stability issues. Instead, mixed precision, which
    is using a mix of float16 and float32, can be used by calling
    `tf.keras.mixed_precision.set_global_policy('mixed_float16')`. See the
    [mixed precision guide](
      https://www.tensorflow.org/guide/keras/mixed_precision) for details.

    Args:
        value: String; `'float16'`, `'float32'`, or `'float64'`.

    Example:
    >>> tf.keras.backend.floatx()
    'float32'
    >>> tf.keras.backend.set_floatx('float64')
    >>> tf.keras.backend.floatx()
    'float64'
    >>> tf.keras.backend.set_floatx('float32')

    Raises:
        ValueError: In case of invalid value.
    Zfloat16r   Zfloat64zUnknown `floatx` value: z. Expected one of N)
ValueErrorstrr   )r	   Zaccepted_dtypesr   r   r   
set_floatxR   s
    
r   zkeras.backend.image_data_formatc               C   s   t S )zReturns the default image data format convention.

    Returns:
        A string, either `'channels_first'` or `'channels_last'`

    Example:
    >>> tf.keras.backend.image_data_format()
    'channels_last'
    )_IMAGE_DATA_FORMATr   r   r   r   image_data_formatu   s    r   z#keras.backend.set_image_data_formatc             C   s0   ddh}| |kr$t d|  d| t| adS )a  Sets the value of the image data format convention.

    Args:
        data_format: string. `'channels_first'` or `'channels_last'`.

    Example:
    >>> tf.keras.backend.image_data_format()
    'channels_last'
    >>> tf.keras.backend.set_image_data_format('channels_first')
    >>> tf.keras.backend.image_data_format()
    'channels_first'
    >>> tf.keras.backend.set_image_data_format('channels_last')

    Raises:
        ValueError: In case of invalid `data_format` value.
    r   Zchannels_firstzUnknown `data_format`: z. Expected one of N)r   r   r   )Zdata_formatZaccepted_formatsr   r   r   set_image_data_format   s
    r   )__doc__Ztensorflow.compat.v2compatZv2tfZ tensorflow.python.util.tf_exportr   r   r   r   Z__internal__dispatchZadd_dispatch_supportr   r
   r   r   r   r   r   r   r   r   <module>   s   #