mindspore.ops.cdist

mindspore.ops.cdist(x1, x2, p=2.0)[源代码]

计算两个Tensor每对行向量之间的p-norm距离。

说明

Ascend上支持的输入数据类型为[float16, float32],CPU上支持的输入数据类型为[float16, float32],GPU上支持的输入数据类型为[float32, float64]。

参数:
  • x1 (Tensor) - 输入Tensor,shape为 \((B, P, M)\)\(B\) 表示0或者正整数。 \(B\) 维度为0时该维度被忽略,shape为 \((P, M)\)

  • x2 (Tensor) - 输入Tensor,shape为 \((B, R, M)\) ,与 x1 的数据类型一致。

  • p (float,可选) - 计算向量对p-norm距离的P值,P∈[0,∞]。默认值: 2.0

返回:

Tensor,p-范数距离,数据类型与 x1 一致,shape为 \((B, P, R)\)

异常:
  • TypeError - x1x2 不是Tensor。

  • TypeError - x1x2 的数据类型不符合上述“说明”中的要求。

  • TypeError - p 不是float32。

  • ValueError - p 是负数。

  • ValueError - x1x2 维度不同。

  • ValueError - x1x2 的维度既不是2,也不是3。

  • ValueError - 单批次训练下 x1x2 的shape不一样。

  • ValueError - x1x2 的列数不一样。

支持平台:

Ascend GPU CPU

样例:

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