
    ~Wh                         d Z ddlZddlmZ  ed          dd            Z ed          dd            Z ed	          dd            ZdS )zNumpy-related utilities.    N)keras_exportzkeras.utils.to_categoricalfloat32c                    t          j        | d          } | j        }|r6|d         dk    r*t          |          dk    rt	          |dd                   }|                     d          } |st          j        |           dz   }| j        d         }t          j        ||f|          }d|t          j        |          | f<   ||fz   }t          j        ||          }|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 as a NumPy array. The class
        axis is placed last.

    Example:

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

    >>> 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reshapemaxzerosarange)ynum_classesr   input_shapencategoricaloutput_shapes          Z/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/keras/utils/np_utils.pyto_categoricalr      s    N 	%   A'K  .{2!++K0@0@10D0DK,--			"A $fQii!m	
A(A{+5999K#$K	!a +/L*[,77K    zkeras.utils.to_ordinalc                 R   t          j        | d          } | j        }|r6|d         dk    r*t          |          dk    rt	          |dd                   }|                     d          } |st          j        |           dz   }| j        d         }t          j        |dz
            }t          j        t          j	        |d          |dg          }t          j
        ||dz
  f|          }d||t          j	        | d          k     <   ||dz
  fz   }t          j        ||          }|S )aw  Converts a class vector (integers) to an ordinal regression matrix.

    This utility encodes class vector to ordinal regression/classification
    matrix where each sample is indicated by a row and rank of that sample is
    indicated by number of ones in that row.

    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:
        An ordinal regression matrix representation of the input as a NumPy
        array. The class axis is placed last.

    Example:

    >>> a = tf.keras.utils.to_ordinal([0, 1, 2, 3], num_classes=4)
    >>> print(a)
    [[0. 0. 0.]
     [1. 0. 0.]
     [1. 1. 0.]
     [1. 1. 1.]]
    r   r   r	   r
   Nr   )r   r   r   r   r   r   r   r   tileexpand_dimsr   )r   r   r   r   r   range_valuesordinalr   s           r   
to_ordinalr"   P   s%   8 	%   A'K  .{2!++K0@0@10D0DK,--			"A $fQii!m	
A9[1_--L72>,::QFCCLh;?+5999G45GL2>!R0001+/!33Lj,//GNr   zkeras.utils.normalizer	      c                     t          j        t           j                            | ||                    }d||dk    <   | t          j        ||          z  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normr   )xaxisorderl2s       r   	normalizer,      sI     
ry~~a55	6	6BBrQwKr~b$''''r   )Nr   )r	   r#   )__doc__numpyr    tensorflow.python.util.tf_exportr   r   r"   r,    r   r   <module>r1      s          : 9 9 9 9 9 *++5 5 5 ,+5p &'', , , (',^ %&&( ( ( '&( ( (r   