Computes the triplet loss with hard negative and hard positive mining.

The loss encourages the maximum positive distance (between a pair of embeddings with the same labels) to be smaller than the minimum negative distance plus the margin constant in the mini-batch. The loss selects the hardest positive and the hardest negative samples within the batch when forming the triplets for computing the loss. See:

We expect labels y_true to be provided as 1-D integer Tensor with shape [batch_size] of multi-class integer labels. And embeddings y_pred must be 2-D float Tensor of l2 normalized embedding vectors.

margin Float, margin term in the loss definition. Default value is 1.0.
soft Boolean, if set, use the soft margin version. Default value is False.
name Optional name for the op.



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

config Output of get_config().

A Loss instance.


View source

Returns the config dictionary for a Loss instance.


Invokes the Loss instance.

y_true Ground truth values. shape = [batch_size, d0, .. dN], except sparse loss functions such as sparse categorical crossentropy where shape = [batch_size, d0, .. dN-1]
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 ondN-1: all loss functions reduce by 1 dimension, usually axis=-1.)

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.)

ValueError If the shape of sample_weight is invalid.