mindspore.ops.cdist

mindspore.ops.cdist(x, y, p=2.0)[source]

Computes p-norm distance between each pair of row vectors of two input Tensors.

Parameters
  • x (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)\). The supported dtype is [float32, float64] on GPU, or [float32] on CPU.

  • y (Tensor) – Input tensor of shape \((B, R, M)\), has the same dtype as x.

  • 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 x, its shape is \((B, P, R)\).

Raises
  • TypeError – If x or y is not Tensor.

  • TypeError – If dtype of x or y is not in [float32, float64] on GPU, or is not in [float32] on CPU.

  • TypeError – If p is not float32.

  • ValueError – If p is negative.

  • ValueError – If dimension of x is not the same as y.

  • ValueError – If dimension of x or y is neither 2 nor 3.

  • ValueError – If the batch shape of x is not the same as the shape of y.

  • ValueError – If the number of columns of x is not the same as the number of y.

Supported Platforms:

Ascend GPU CPU

Examples

>>> 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]]]