mindspore.ops.approximate_equal

mindspore.ops.approximate_equal(x, y, tolerance=1e-05)[源代码]

逐元素计算abs(x-y),如果小于tolerance则为 True ,否则为 False

\[\begin{split}out_i = \begin{cases} & \text{ if } \left | x_{i} - y_{i} \right | < \text{tolerance},\ \ True \\ & \text{ if } \left | x_{i} - y_{i} \right | \ge \text{tolerance},\ \ False \end{cases}\end{split}\]

tolerance 为相等的两元素间最大偏差。 输入 xy 会通过隐式数据类型转换使数据类型保持一致。如果数据类型不同,低精度的数据类型会被自动转换到高精度的数据类型。

参数:
  • x (Tensor) - 输入Tensor,需为以下数据类型:float16,float32。shape: \((N,*)\) ,其中 \(*\) 表示任何数量的附加维度。

  • y (Tensor) - 输入Tensor,shape与数据类型与 x 相同。

  • tolerance (float) - 两元素可被视为相等的最大偏差。默认值: 1e-5

返回:

Tensor,shape与 x 相同,bool类型。

异常:
  • TypeError - tolerance 不是float类型。

  • RuntimeError - xy 之间的类型转换不被支持。

支持平台:

Ascend GPU CPU

样例:

>>> import numpy as np
>>> from mindspore import Tensor, ops
>>> from mindspore import dtype as mstype
>>> tol = 1.5
>>> x = Tensor(np.array([1, 2, 3]), mstype.float32)
>>> y = Tensor(np.array([2, 4, 6]), mstype.float32)
>>> output = ops.approximate_equal(Tensor(x), Tensor(y), tol)
>>> print(output)
[ True  False  False]