Rumah  >  Artikel  >  pembangunan bahagian belakang  >  isclose dan sama dalam PyTorch

isclose dan sama dalam PyTorch

Susan Sarandon
Susan Sarandonasal
2024-11-05 18:54:02298semak imbas

isclose and equal in PyTorch

Beli Saya Kopi☕

*Memo:

  • Siaran saya menerangkan eq() dan ne().
  • Siaran saya menerangkan gt() dan lt().
  • Siaran saya menerangkan ge() dan le().
  • Siaran saya menerangkan torch.nan dan torch.inf.

isclose() boleh menyemak sama ada sifar atau lebih elemen bagi tensor 0D pertama atau lebih D adalah sama atau hampir sama dengan sifar atau lebih elemen bagi elemen tensor 0D ke-2 atau lebih D dari segi elemen, mendapat 0D atau lebih D tensor sifar atau lebih elemen seperti yang ditunjukkan di bawah:

*Memo:

  • isclose() boleh digunakan dengan obor atau tensor.
  • Argumen(input) pertama dengan obor atau menggunakan tensor(Jenis Diperlukan:tensor int, float, kompleks atau bool).
  • Argumen ke-2 dengan obor atau argumen pertama dengan tensor adalah lain(Jenis-Jenis:tensor int, apungan, kompleks atau bool).
  • Argumen ke-3 dengan obor atau argumen ke-2 dengan tensor ialah rtol(Optional-Default:1e-05-Type:float).
  • Argumen ke-4 dengan obor atau argumen ke-3 dengan tensor ialah atol(Optional-Default:1e-08-Type:float).
  • Argumen ke-5 dengan obor atau argumen ke-4 dengan tensor ialah equal_nan(Optional-Default:False-Type:bool): *Memo:
    • Jika Benar, nan dan nan kembali Benar.
    • Pada asasnya, nan dan nan membalas Palsu.
  • Formulanya ialah |input - lain| <= rtol x |lain| atol.
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() boleh menyemak sama ada dua daripada 0D atau lebih D tensor mempunyai saiz dan elemen yang sama, mendapatkan skalar nilai boolean seperti yang ditunjukkan di bawah:

*Memo:

  • equal() boleh digunakan dengan obor atau tensor.
  • Argumen(input) pertama dengan obor atau menggunakan tensor(Jenis Diperlukan:tensor int, float, kompleks atau bool).
  • Argumen ke-2 dengan obor atau argumen pertama dengan tensor adalah lain(Jenis-Jenis:tensor int, apungan, kompleks atau 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

Atas ialah kandungan terperinci isclose dan sama dalam PyTorch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn