Shortcuts

Minkowski Distance

Functional Interface

torchmetrics.functional.pairwise_minkowski_distance(x, y=None, exponent=2, reduction=None, zero_diagonal=None)[source]

Calculate pairwise minkowski distances.

d_{minkowski}(x,y,p) = ||x - y||_p = \sqrt[p]{\sum_{d=1}^D (x_d - y_d)^p}

If both x and y are passed in, the calculation will be performed pairwise between the rows of x and y. If only x is passed in, the calculation will be performed between the rows of x.

Parameters:
  • x (Tensor) – Tensor with shape [N, d]

  • y (Optional[Tensor]) – Tensor with shape [M, d], optional

  • exponent (Union[int, float]) – int or float larger than 1, exponent to which the difference between preds and target is to be raised

  • reduction (Optional[Literal['mean', 'sum', 'none', None]]) – reduction to apply along the last dimension. Choose between ‘mean’, ‘sum’ (applied along column dimension) or ‘none’, None for no reduction

  • zero_diagonal (Optional[bool]) – if the diagonal of the distance matrix should be set to 0. If only x is given this defaults to True else if y is also given it defaults to False

Return type:

Tensor

Returns:

A [N,N] matrix of distances if only x is given, else a [N,M] matrix

Example

>>> import torch
>>> from torchmetrics.functional.pairwise import pairwise_minkowski_distance
>>> x = torch.tensor([[2, 3], [3, 5], [5, 8]], dtype=torch.float32)
>>> y = torch.tensor([[1, 0], [2, 1]], dtype=torch.float32)
>>> pairwise_minkowski_distance(x, y, exponent=4)
tensor([[3.0092, 2.0000],
        [5.0317, 4.0039],
        [8.1222, 7.0583]])
>>> pairwise_minkowski_distance(x, exponent=4)
tensor([[0.0000, 2.0305, 5.1547],
        [2.0305, 0.0000, 3.1383],
        [5.1547, 3.1383, 0.0000]])