mars.tensor.allclose#

mars.tensor.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[来源]#

如果两个张量在容忍度范围内逐元素相等,则返回True。

容忍值是正值,通常是非常小的数字。 相对差异 (rtol * abs(b)) 和绝对差异 atol 被加在一起,以与 ab 之间的绝对差异进行比较。

如果任一数组包含一个或多个 NaNs,则返回 False。 如果 Infs 在两个张量中位于同一位置并且符号相同,则视为相等。

Parameters
  • a (array_like) – 输入的张量用于比较。

  • b (array_like) – 输入要比较的张量。

  • rtol (float) – 相对容差参数(见备注)。

  • atol (float) – 绝对容差参数(见备注)。

  • equal_nan (bool) – 是否将NaN视为相等。如果为True,a中的NaN将被视为在输出张量中与b中的NaN相等。

Returns

allclose – 如果两个张量在给定的容差内相等,则返回True;否则返回False。

Return type

bool

另请参阅

isclose, all, any, equal

备注

如果以下方程逐元素为真,则 allclose 返回 真。

绝对值(a - b) <= (atol + rtol * 绝对值(b))

上述方程在 ab 上并不对称,因此 allclose(a, b) 在某些罕见情况下可能与 allclose(b, a) 不同。

ab的比较使用标准广播,这意味着ab不需要具有相同的形状,以便allclose(a, b)的结果为True。equal也是这样,但array_equal则不是。

示例

>>> import mars.tensor as mt
>>> mt.allclose([1e10,1e-7], [1.00001e10,1e-8]).execute()
False
>>> mt.allclose([1e10,1e-8], [1.00001e10,1e-9]).execute()
True
>>> mt.allclose([1e10,1e-8], [1.0001e10,1e-9]).execute()
False
>>> mt.allclose([1.0, mt.nan], [1.0, mt.nan]).execute()
False
>>> mt.allclose([1.0, mt.nan], [1.0, mt.nan], equal_nan=True).execute()
True