B
    ӻd                 @   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: class vector to be converted into a matrix
          (integers from 0 to num_classes).
      num_classes: total number of classes. If `None`, this would be inferred
        as the (largest number in `y`) + 1.
      dtype: The data type expected by the input. Default: `'float32'`.

  Returns:
      A binary matrix representation of the input. The classes 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.]

  Raises:
      Value Error: If input contains string value

  int)dtype   Nr   )
nparrayshapelentupleZravelmaxZzerosZarangeZreshape)yZnum_classesr   Zinput_shapenZcategoricalZoutput_shape r   X/var/www/html/venv/lib/python3.7/site-packages/tensorflow/python/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   Z
atleast_1dZlinalgZnormZexpand_dims)xZaxisorderl2r   r   r   	normalizeQ   s    r   )Nr   )r   r   )__doc__numpyr   Z tensorflow.python.util.tf_exportr   r   r   r   r   r   r   <module>   s   ;