code: def npairs_loss(y_true: TensorLike, y_pred: TensorLike) -> tf.Tensor:
      """Computes the npairs loss between `y_true` and `y_pred`.
  
      Npairs loss expects paired data where a pair is composed of samples from
      the same labels and each pairs in the minibatch have different labels.
      The loss takes each row of the pair-wise similarity matrix, `y_pred`,
      as logits and the remapped multi-class labels, `y_true`, as labels.
  
      The similarity matrix `y_pred` between two embedding matrices `a` and `b`
      with shape `[batch_size, hidden_size]` can be computed as follows:
  
      >>> a = tf.constant([[1, 2],
      ...                 [3, 4],
      ...                 [5, 6]], dtype=tf.float16)
      >>> b = tf.constant([[5, 9],
      ...                 [3, 6],
      ...                 [1, 8]], dtype=tf.float16)
      >>> y_pred = tf.matmul(a, b, transpose_a=False, transpose_b=True)
      >>> y_pred
      <tf.Tensor: shape=(3, 3), dtype=float16, numpy=
      array([[23., 15., 17.],
         [51., 33., 35.],
         [79., 51., 53.]], dtype=float16)>
  
      <... Note: constants a & b have been used purely for
      example purposes and have no significant value ...>
  
      See: http://www.nec-labs.com/uploads/images/Department-Images/MediaAnalytics/papers/nips16_npairmetriclearning.pdf
  
      Args:
        y_true: 1-D integer `Tensor` with shape `[batch_size]` of
          multi-class labels.
        y_pred: 2-D float `Tensor` with shape `[batch_size, batch_size]` of
          similarity matrix between embedding matrices.
  
      Returns:
        npairs_loss: float scalar.
      """
      y_pred = tf.convert_to_tensor(y_pred)
      y_true = tf.cast(y_true, y_pred.dtype)
  
      # Expand to [batch_size, 1]
      y_true = tf.expand_dims(y_true, -1)
      y_true = tf.cast(
          tf.equal(y_true, tf.transpose(y_true)), y_pred.dtype
      )
      y_true /= tf.math.reduce_sum(y_true, 1, keepdims=True)
  
      loss = tf.nn.softmax_cross_entropy_with_logits(
          logits=y_pred, labels=y_true
      )
  
      return tf.math.reduce_mean(loss)
  
file_path: addons/tensorflow_addons/losses/npairs.py
imports: import tensorflow
  from typeguard import typechecked
  from tensorflow_addons.utils.types import TensorLike
label_desc: Use image node_id 1 for calling a global function with example usage: npairs_loss(y_true, y_pred) and returns: tf