mindspore.ops.cdist
- mindspore.ops.cdist(x1, x2, p=2.0)[source]
Computes p-norm distance between each pair of row vectors of two input Tensors.
Note
On Ascend, the supported dtypes are float16 and float32. On CPU, the supported dtypes are float16 and float32. On GPU, the supported dtypes are float32 and float64.
- Parameters
x1 (Tensor) – Input tensor of 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) – Input tensor of 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
.
- Returns
Tensor, p-norm distance, has the same dtype as x1, its shape is \((B, P, R)\).
- Raises
TypeError – If x1 or x2 is not Tensor.
TypeError – If dtype of x1 or x2 is not listed in the "Note" above.
TypeError – If p is not float32.
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
GPU
CPU
Examples
>>> import numpy as np >>> from mindspore import Tensor, ops >>> x = Tensor(np.array([[[1.0, 1.0], [2.0, 2.0]]]).astype(np.float32)) >>> y = Tensor(np.array([[[3.0, 3.0], [3.0, 3.0]]]).astype(np.float32)) >>> output = ops.cdist(x, y, 2.0) >>> print(output) [[[2.8284273 2.8284273] [1.4142137 1.4142137]]]