mindspore.mint.cdist

View Source On AtomGit
mindspore.mint.cdist(x1, x2, p=2.0, compute_mode='use_mm_for_euclid_dist_if_necessary')[source]

Compute p-norm distance between each pair of row vectors of two input tensors.

Warning

This is an experimental optimizer API that is subject to change.

Note

On Ascend, the supported dtypes are mindspore.float16 and mindspore.float32.

Parameters
  • x1 (Tensor) – The input tensor with shape \((B, P, M)\). Letter \(B\) represents 0 or positive int number. When \(B\) is equal to 0, it means this dimension can be ignored, i.e. shape of the tensor is \((P, M)\).

  • x2 (Tensor) – The input tensor with shape \((B, R, M)\), has the same dtype as x1.

  • p (float, optional) – P value for the p-norm distance to calculate between each vector pair, P >= 0. Default 2.0 .

  • compute_mode (str, optional) – Specify the compute mode. Setting this parameter currently has no effect. Default 'use_mm_for_euclid_dist_if_necessary' .

Returns

Tensor, p-norm distance, with the same dtype as x1, its shape is \((B, P, R)\).

Raises
  • ValueError – If p is negative.

  • ValueError – If dimension of x1 is not the same as x2.

  • ValueError – If dimension of x1 or x2 is neither 2 nor 3.

  • ValueError – If the batch dim of x1 and x2 can not broadcast.

  • ValueError – If the number of columns of x1 is not the same as that of x2.

Supported Platforms:

Ascend

Examples

>>> import mindspore
>>> x = mindspore.tensor([[[1.0, 1.0], [2.0, 2.0]]], dtype=mindspore.float32)
>>> y = mindspore.tensor([[[3.0, 3.0], [3.0, 3.0]]], dtype=mindspore.float32)
>>> mindspore.mint.cdist(x, y, 2.0)
Tensor(shape=[1, 2, 2], dtype=Float32, value=
[[[ 2.82842708e+00,  2.82842708e+00],
  [ 1.41421354e+00,  1.41421354e+00]]])