PyTorch 中的 isclose

pytorch 中的 isclose

请我喝杯咖啡☕

*备忘录:

  • 我的帖子解释了 equal()、eq() 和 ne()。
  • 我的帖子解释了 gt() 和 lt()。
  • 我的帖子解释了 ge() 和 le()。

isclose() 可以检查第一个 0d 或更多 d 张量的零个或多个元素是否等于或接近等于第二个 0d 或更多 d 张量的零个或多个元素,得到 0d 或更多零个或多个元素的 d 张量如下所示:

*备忘录:

  • isclose() 可以与 torch 或张量一起使用。
  • 第一个参数(输入)使用 torch 或使用张量(必需类型:int、float、complex 或 bool 的张量)。
  • 带有 torch 的第二个参数或带有张量的第一个参数是其他(必需类型:int、float、complex 或 bool 的张量)。
  • 带有 torch 的第三个参数或带有张量的第二个参数是 rtol(optional-default:1e-05-type:float)。
  • 带有 torch 的第四个参数或带有张量的第三个参数是 atol(optional-default:1e-08-type:float)。
  • 带有 torch 的第五个参数或带有张量的第四个参数是 equal_nan(optional-default:false-type:bool): *备注:
    • 如果为 true,则 nan 和 nan 返回 true。
    • 基本上,nan 和 nan 返回 false。
  • 公式为 |输入 - 其他|
import torch

tensor1 = torch.tensor([1.00001001, 1.00000996, 1.00000995, torch.nan])
tensor2 = torch.tensor([1., 1., 1., torch.nan])

torch.isclose(input=tensor1, other=tensor2)
torch.isclose(input=tensor1, other=tensor2,
              rtol=1e-05, atol=1e-08, equal_nan=False)
            # 0.00001   # 0.00000001
tensor1.isclose(other=tensor2)
torch.isclose(input=tensor2, other=tensor1)
# tensor([False, False, True, False])

torch.isclose(input=tensor1, other=tensor2, equal_nan=True)
# tensor([False, False, True, True])

tensor1 = torch.tensor([[1.00001001, 1.00000996],
                        [1.00000995, torch.nan]])
tensor2 = torch.tensor([[1., 1.],
                        [1., torch.nan]])
torch.isclose(input=tensor1, other=tensor2)
torch.isclose(input=tensor2, other=tensor1)
# tensor([[False, False],
#         [True, False]])

tensor1 = torch.tensor([[[1.00001001],
                         [1.00000996]],
                        [[1.00000995],
                         [torch.nan]]])
tensor2 = torch.tensor([[[1.], [1.]],
                        [[1.], [torch.nan]]])
torch.isclose(input=tensor1, other=tensor2)
torch.isclose(input=tensor2, other=tensor1)
# tensor([[[False], [False]],
#         [[True], [False]]])

tensor1 = torch.tensor([[1.00001001, 1.00000996],
                        [1.00000995, torch.nan]])
tensor2 = torch.tensor([1., 1.])

torch.isclose(input=tensor1, other=tensor2)
torch.isclose(input=tensor2, other=tensor1)
# tensor([[False, False],
#         [True, False]])

tensor1 = torch.tensor([[1.00001001, 1.00000996],
                        [1.00000995, torch.nan]])
tensor2 = torch.tensor(1.)

torch.isclose(input=tensor1, other=tensor2)
torch.isclose(input=tensor2, other=tensor1)
# tensor([[False, False],
#         [True, False]])

tensor1 = torch.tensor([0, 1, 2])
tensor2 = torch.tensor(1)

torch.isclose(input=tensor1, other=tensor2)
# tensor([False, True, False])

tensor1 = torch.tensor([0.+0.j, 1.+0.j, 2.+0.j])
tensor2 = torch.tensor(1.+0.j)

torch.isclose(input=tensor1, other=tensor2)
# tensor([False, True, False])

tensor1 = torch.tensor([False, True, False])
tensor2 = torch.tensor(True)

torch.isclose(input=tensor1, other=tensor2)
# tensor([False, True, False])

以上就是PyTorch 中的 isclose的详细内容,更多请关注其它相关文章!