o
    2h                     @   sL  d dl 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 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m0Z0 d d/l1m2Z2 h eeeeeee	e
eeeeeeeeeeeeeeee'e-eeeee.e+e)e*e,e"e(e&e%e/e e$e0e!e#Z3d0d1 e3D Z4e45eee'e'e)e)e+e+e*e*e,e,d2 ed3d4d5 Z6ed6d<d7d8Z7ed9d:d; Z8dS )=    N)keras_export)Loss)CTC)BinaryCrossentropy)BinaryFocalCrossentropy)CategoricalCrossentropy)CategoricalFocalCrossentropy)CategoricalHinge)Circle)CosineSimilarity)Dice)Hinge)Huber)KLDivergence)LogCosh)LossFunctionWrapper)MeanAbsoluteError)MeanAbsolutePercentageError)MeanSquaredError)MeanSquaredLogarithmicError)Poisson)SparseCategoricalCrossentropy)SquaredHinge)Tversky)binary_crossentropy)binary_focal_crossentropy)categorical_crossentropy)categorical_focal_crossentropy)categorical_hinge)circle)cosine_similarity)ctc)dice)hinge)huber)kl_divergence)log_cosh)mean_absolute_error)mean_absolute_percentage_error)mean_squared_error)mean_squared_logarithmic_error)poisson)sparse_categorical_crossentropy)squared_hinge)tversky)serialization_libc                 C   s   i | ]}|j |qS  )__name__).0clsr0   r0   T/var/www/html/chatgem/venv/lib/python3.10/site-packages/keras/src/losses/__init__.py
<dictcomp>n   s    r5   )bceBCEkldKLDmaeMAEmseMSEmapeMAPEmsleMSLEzkeras.losses.serializec                 C   s
   t | S )zSerializes loss function or `Loss` instance.

    Args:
        loss: A Keras `Loss` instance or a loss function.

    Returns:
        Loss configuration dictionary.
    )r/   serialize_keras_object)lossr0   r0   r4   	serialize   s   

rD   zkeras.losses.deserializec                 C   s   t j| t|dS )aZ  Deserializes a serialized loss class/function instance.

    Args:
        name: Loss configuration.
        custom_objects: Optional dictionary mapping names (strings) to custom
            objects (classes and functions) to be considered during
            deserialization.

    Returns:
        A Keras `Loss` instance or a loss function.
    )module_objectscustom_objects)r/   deserialize_keras_objectALL_OBJECTS_DICT)namerF   r0   r0   r4   deserialize   s
   rJ   zkeras.losses.getc                 C   sf   | du rdS t | trt| }nt | trt| d}n| }t|r,t|r*| }|S t	d|  )a  Retrieves a Keras loss as a `function`/`Loss` class instance.

    The `identifier` may be the string name of a loss function or `Loss` class.

    >>> loss = losses.get("categorical_crossentropy")
    >>> type(loss)
    <class 'function'>
    >>> loss = losses.get("CategoricalCrossentropy")
    >>> type(loss)
    <class '...CategoricalCrossentropy'>

    You can also specify `config` of the loss to this function by passing dict
    containing `class_name` and `config` as an identifier. Also note that the
    `class_name` must map to a `Loss` class

    >>> identifier = {"class_name": "CategoricalCrossentropy",
    ...               "config": {"from_logits": True}}
    >>> loss = losses.get(identifier)
    >>> type(loss)
    <class '...CategoricalCrossentropy'>

    Args:
        identifier: A loss identifier. One of None or string name of a loss
            function/class or loss configuration dictionary or a loss function
            or a loss class instance.

    Returns:
        A Keras loss as a `function`/ `Loss` class instance.
    Nz%Could not interpret loss identifier: )

isinstancedictrJ   strrH   getcallableinspectisclass
ValueError)
identifierobjr0   r0   r4   rN      s   



rN   )N)9rP   keras.src.api_exportr   keras.src.losses.lossr   keras.src.losses.lossesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   keras.src.savingr/   ALL_OBJECTSrH   updaterD   rJ   rN   r0   r0   r0   r4   <module>   s<   	
 !"#$%&()*+,-.0124579<
