a
    SicF                     @   s@   d Z ddlZddlmZ eddddZeddddZdS )zNumpy-related utilities.    N)keras_exportzkeras.utils.to_categoricalfloat32c                 C   s   t j| dd} | j}|r@|d dkr@t|dkr@t|dd }|  } |sZt | d }| jd }t j||f|d}d|t || f< ||f }t 	||}|S )a  Converts a class vector (integers) to binary class matrix.

    E.g. for use with `categorical_crossentropy`.

    Args:
        y: Array-like with class values to be converted into a matrix
            (integers from 0 to `num_classes - 1`).
        num_classes: Total number of classes. If `None`, this would be inferred
          as `max(y) + 1`.
        dtype: The data type expected by the input. Default: `'float32'`.

    Returns:
        A binary matrix representation of the input. The class axis is placed
        last.

    Example:

    >>> a = tf.keras.utils.to_categorical([0, 1, 2, 3], num_classes=4)
    >>> a = tf.constant(a, shape=[4, 4])
    >>> print(a)
    tf.Tensor(
      [[1. 0. 0. 0.]
       [0. 1. 0. 0.]
       [0. 0. 1. 0.]
       [0. 0. 0. 1.]], shape=(4, 4), dtype=float32)

    >>> b = tf.constant([.9, .04, .03, .03,
    ...                  .3, .45, .15, .13,
    ...                  .04, .01, .94, .05,
    ...                  .12, .21, .5, .17],
    ...                 shape=[4, 4])
    >>> loss = tf.keras.backend.categorical_crossentropy(a, b)
    >>> print(np.around(loss, 5))
    [0.10536 0.82807 0.1011  1.77196]

    >>> loss = tf.keras.backend.categorical_crossentropy(a, a)
    >>> print(np.around(loss, 5))
    [0. 0. 0. 0.]
    int)dtype   Nr   )
nparrayshapelentupleravelmaxzerosarangereshape)ynum_classesr   input_shapencategoricaloutput_shape r   P/var/www/html/django/DPS/env/lib/python3.9/site-packages/keras/utils/np_utils.pyto_categorical   s    )

r   zkeras.utils.normalizer      c                 C   s2   t t j| ||}d||dk< | t || S )zNormalizes a Numpy array.

    Args:
        x: Numpy array to normalize.
        axis: axis along which to normalize.
        order: Normalization order (e.g. `order=2` for L2 norm).

    Returns:
        A normalized copy of the array.
    r   r   )r   
atleast_1dlinalgnormexpand_dims)xaxisorderl2r   r   r   	normalizeO   s    r$   )Nr   )r   r   )__doc__numpyr    tensorflow.python.util.tf_exportr   r   r$   r   r   r   r   <module>   s   7