tfa.losses.NpairsMultilabelLoss

Class `NpairsMultilabelLoss`

Computes the npairs loss between multilabel data `y_true` and `y_pred`.

Aliases:

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.

To deal with multilabel inputs, the count of label intersection is computed as follows:

``````L_{i,j} = | set_of_labels_for(i) \cap set_of_labels_for(j) |
``````

Each row of the count based label matrix is further normalized so that each row sums to one.

`y_true` should be a binary indicator for classes. That is, if `y_true[i, j] = 1`, then `i`th sample is in `j`th class; if `y_true[i, j] = 0`, then `i`th sample is not in `j`th class.

The similarity matrix `y_pred` between two embedding matrices `a` and `b` with shape `[batch_size, hidden_size]` can be computed as follows:

``````# y_pred = a * b^T
y_pred = tf.matmul(a, b, transpose_a=False, transpose_b=True)
``````

Args:

• `name`: (Optional) name for the loss.

`__init__`

View source

``````__init__(name='npairs_multilabel_loss')
``````

Initialize self. See help(type(self)) for accurate signature.

Methods

`__call__`

``````__call__(
y_true,
y_pred,
sample_weight=None
)
``````

Invokes the `Loss` instance.

Args:

• `y_true`: Ground truth values. shape = `[batch_size, d0, .. dN]`
• `y_pred`: The predicted values. shape = `[batch_size, d0, .. dN]`
• `sample_weight`: Optional `sample_weight` acts as a coefficient for the loss. If a scalar is provided, then the loss is simply scaled by the given value. If `sample_weight` is a tensor of size `[batch_size]`, then the total loss for each sample of the batch is rescaled by the corresponding element in the `sample_weight` vector. If the shape of `sample_weight` is `[batch_size, d0, .. dN-1]` (or can be broadcasted to this shape), then each loss element of `y_pred` is scaled by the corresponding value of `sample_weight`. (Note on`dN-1`: all loss functions reduce by 1 dimension, usually axis=-1.)

Returns:

Weighted loss float `Tensor`. If `reduction` is `NONE`, this has shape `[batch_size, d0, .. dN-1]`; otherwise, it is scalar. (Note `dN-1` because all loss functions reduce by 1 dimension, usually axis=-1.)

Raises:

• `ValueError`: If the shape of `sample_weight` is invalid.

`from_config`

``````from_config(
cls,
config
)
``````

Instantiates a `Loss` from its config (output of `get_config()`).

Args:

• `config`: Output of `get_config()`.

Returns:

A `Loss` instance.

`get_config`

``````get_config()
``````