allclose

paddle.fluid.layers.allclose(input, other, rtol=1e-05, atol=1e-08, equal_nan=False, name=None)[源代码]

逐个检查input和other的所有元素是否均满足如下条件:

allclose - 图1

该API的行为类似于

allclose - 图2

,即当两个待比较Tensor的所有元素均在一定容忍误差范围内视为相等则该API返回True值。

参数

  • input (Variable) - 第一个输入待比较Tensor input。
  • other (Variable) - 第二个输入待比较Tensor other。
  • rtol (float,可选) - 相对容忍误差,默认值为1e-5。
  • atol (float,可选) - 绝对容忍误差,默认值为1e-8。
  • equal_nan (bool,可选) - 如果设置为True,则两个NaN数值将被视为相等,默认值为False。
  • name (str,可选)- 具体用法请参见 Name ,一般无需设置,默认值为None。

返回

计算得到的布尔类型单值Tensor。

返回类型

变量(Variable)

代码示例

  1. import paddle
  2. import paddle.fluid as fluid
  3. import numpy as np
  4. use_cuda = fluid.core.is_compiled_with_cuda()
  5. a = fluid.data(name="a", shape=[2], dtype='float32')
  6. b = fluid.data(name="b", shape=[2], dtype='float32')
  7. result = fluid.layers.allclose(a, b, rtol=1e-05, atol=1e-08,
  8. equal_nan=False, name="ignore_nan")
  9. result_nan = fluid.layers.allclose(a, b, rtol=1e-05, atol=1e-08,
  10. equal_nan=True, name="equal_nan")
  11. place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
  12. exe = fluid.Executor(place)
  13. exe.run(fluid.default_startup_program())
  14. x = np.array([10000., 1e-07]).astype("float32")
  15. y = np.array([10000.1, 1e-08]).astype("float32")
  16. result_v, result_nan_v = exe.run(
  17. feed={'a': x, 'b': y},
  18. fetch_list=[result, result_nan])
  19. print(result_v, result_nan_v)
  20. # Output: (array([False]), array([False]))
  21. x = np.array([10000., 1e-08]).astype("float32")
  22. y = np.array([10000.1, 1e-09]).astype("float32")
  23. result_v, result_nan_v = exe.run(
  24. feed={'a': x, 'b': y},
  25. fetch_list=[result, result_nan])
  26. print(result_v, result_nan_v)
  27. # Output: (array([ True]), array([ True]))
  28. x = np.array([1.0, float('nan')]).astype("float32")
  29. y = np.array([1.0, float('nan')]).astype("float32")
  30. result_v, result_nan_v = exe.run(
  31. feed={'a': x, 'b': y},
  32. fetch_list=[result, result_nan])
  33. print(result_v, result_nan_v)
  34. # Output: (array([False]), array([ True]))