nn_triplet_margin_loss | R Documentation |
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)
.
nn_triplet_margin_loss(
margin = 1,
p = 2,
eps = 1e-06,
swap = FALSE,
reduction = "mean"
)
margin |
(float, optional): Default: |
p |
(int, optional): The norm degree for pairwise distance. Default: |
eps |
constant to avoid NaN's |
swap |
(bool, optional): 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. Default: |
reduction |
(string, optional): Specifies the reduction to apply to the output:
|
The distance swap is described in detail in the paper Learning shallow convolutional feature descriptors with triplet losses \Sexpr[results=rd]{tools:::Rd_expr_doi("10.5244/C.30.119")} 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) = | {\bf x}_i - {\bf y}_i |_p
See also nn_triplet_margin_with_distance_loss()
, which computes the
triplet margin loss for input tensors using a custom distance function.
Input: (N, D)
where D
is the vector dimension.
Output: A Tensor of shape (N)
if reduction
is 'none'
, or a scalar
otherwise.
if (torch_is_installed()) {
triplet_loss <- nn_triplet_margin_loss(margin = 1, p = 2)
anchor <- torch_randn(100, 128, requires_grad = TRUE)
positive <- torch_randn(100, 128, requires_grad = TRUE)
negative <- torch_randn(100, 128, requires_grad = TRUE)
output <- triplet_loss(anchor, positive, negative)
output$backward()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.