View source on GitHub

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.



Invokes the Loss instance.


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


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


  • config: Output of get_config().


A Loss instance.


View source