TripletMarginLoss
class torch.nn.TripletMarginLoss(margin=1.0, p=2.0, eps=1e-06, swap=False, size_average=None, reduce=None, reduction='mean')
Creates a criterion that measures the triplet loss given an input
   tensors x1, x2, x3 and a margin with a value greater than 0. This
   is used for measuring a relative similarity between samples. A
   triplet is composed by a, p and n (i.e., anchor, positive
   examples and negative examples respectively). The shapes of all
   input tensors should be (N, D).
The distance swap is described in detail in the paper Learning
   shallow convolutional feature descriptors with triplet losses by V.
   Balntas, E. Riba et al.
The loss function for each sample in the mini-batch is:
  L(a, p, n) = \max \{d(a_i, p_i) - d(a_i, n_i) + {\rm margin},
  0\}

where
  d(x_i, y_i) = \left\lVert {\bf x}_i - {\bf y}_i \right\rVert_p

See also "TripletMarginWithDistanceLoss", which computes the