PyTorch 中的接近和相等

Susan Sarandon
發布: 2024-11-05 18:54:02
原創
217 人瀏覽過

isclose and equal in PyTorch

請我喝杯咖啡☕

*備忘錄:

  • 我的帖子解釋了 eq() 和 ne()。
  • 我的帖子解釋了 gt() 和 lt()。
  • 我的帖子解釋了 ge() 和 le()。
  • 我的帖子解釋了 torch.nan 和 torch.inf。

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])
登入後複製

equal() 可以檢查兩個 0D 或更多 D 張量是否具有相同的大小和元素,得到布林值的標量,如下所示:

*備忘錄:

  • equal() 可以與 torch 或張量一起使用。
  • 第一個參數(輸入)使用 torch 或使用張量(必要類型:int、float、complex 或 bool 的張量)。
  • 帶有 torch 的第二個參數或帶有張量的第一個參數是其他(必需類型:int、float、complex 或 bool 的張量)。
import torch

tensor1 = torch.tensor([5, 9, 3])
tensor2 = torch.tensor([5, 9, 3])

torch.equal(input=tensor1, other=tensor2)
tensor1.equal(other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# True

tensor1 = torch.tensor([5, 9, 3])
tensor2 = torch.tensor([7, 9, 3])

torch.equal(input=tensor1, other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# False

tensor1 = torch.tensor([5, 9, 3])
tensor2 = torch.tensor([[5, 9, 3]])

torch.equal(input=tensor1, other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# False

tensor1 = torch.tensor([5., 9., 3.])
tensor2 = torch.tensor([5.+0.j, 9.+0.j, 3.+0.j])

torch.equal(input=tensor1, other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# True

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

torch.equal(input=tensor1, other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# True

tensor1 = torch.tensor([], dtype=torch.int64)
tensor2 = torch.tensor([], dtype=torch.float32)

torch.equal(input=tensor1, other=tensor2)
torch.equal(input=tensor2, other=tensor1)
# True
登入後複製

以上是PyTorch 中的接近和相等的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!