mindspore.mint.cdist

查看源文件
mindspore.mint.cdist(x1, x2, p=2.0, compute_mode='use_mm_for_euclid_dist_if_necessary')[源代码]

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

警告

这是一个实验性API,后续可能修改或删除。

说明

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

  • compute_mode (string,可选) - 指定计算模式。目前设置此参数无效果。默认值: 'use_mm_for_euclid_dist_if_necessary'

返回:

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 的批次维无法广播。

  • ValueError - x1x2 的列数不一样。

支持平台:

Ascend

样例:

>>> import numpy as np
>>> from mindspore import Tensor, mint
>>> 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 = mint.cdist(x, y, 2.0)
>>> print(output)
[[[2.8284273 2.8284273]
  [1.4142137 1.4142137]]]