
    6bi                     |    S r SSKrSSKJr  \" S5      S
S j5       r\" S5      S
S j5       r\" S5      SS	 j5       rg)zNumpy-related utilities.    N)keras_exportzkeras.utils.to_categoricalc                    [         R                  " U SS9n U R                  nU(       a&  US   S:X  a  [        U5      S:  a  [	        USS 5      nU R                  S5      n U(       d  [         R                  " U 5      S-   nU R                  S   n[         R                  " XA4US9nSU[         R                  " U5      U 4'   X14-   n[         R
                  " XV5      nU$ )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          U/home/james-whalen/.local/lib/python3.13/site-packages/tf_keras/src/utils/np_utils.pyto_categoricalr      s    N 	% A''K {2!+K0@10DK,-			"AffQi!m	
A((A+59K#$K		!a /L**[7K    zkeras.utils.to_ordinalc                 V   [         R                  " U SS9n U R                  nU(       a&  US   S:X  a  [        U5      S:  a  [	        USS 5      nU R                  S5      n U(       d  [         R                  " U 5      S-   nU R                  S   n[         R                  " US-
  5      n[         R                  " [         R                  " US5      US/5      n[         R                  " XAS-
  4US9nSXe[         R                  " U S5      :  '   X1S-
  4-   n[         R
                  " Xg5      nU$ )a'  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@10DK,-			"AffQi!m	
A99[1_-L772>>,:QFCLhh?+59G45G2>>!R001/!33Ljj/GNr   zkeras.utils.normalizec                     [         R                  " [         R                  R                  XU5      5      nSX3S:H  '   U [         R                  " X15      -  $ )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*      s@     
ryy~~a5	6BBQwKr~~b'''r   )Nfloat32)r      )__doc__numpyr
    tensorflow.python.util.tf_exportr   r   r!   r*    r   r   <module>r1      sb      : *+5 ,5p &', (,^ %&( '(r   