Maison  >  Article  >  développement back-end  >  isclose et égal dans PyTorch

isclose et égal dans PyTorch

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 18:54:02217parcourir

isclose and equal in PyTorch

Achetez-moi un café☕

*Mémos :

  • Mon message explique eq() et ne().
  • Mon message explique gt() et lt().
  • Mon message explique ge() et le().
  • Mon message explique torch.nan et torch.inf.

isclose() peut vérifier si zéro ou plusieurs éléments du 1er tenseur 0D ou plus D sont égaux ou presque égaux à zéro ou plusieurs éléments du 2e tenseur 0D ou plus D par élément, obtenant le 0D ou plus Tenseur D de zéro ou plusieurs éléments comme indiqué ci-dessous :

*Mémos :

  • isclose() peut être utilisé avec une torche ou un tenseur.
  • Le 1er argument (entrée) avec torch ou en utilisant un tenseur (Required-Type : tenseur de int, float, complexe ou bool).
  • Le 2ème argument avec torch ou le 1er argument avec un tenseur est autre (Required-Type : tensor of int, float, complexe ou bool).
  • Le 3ème argument avec torch ou le 2ème argument avec un tenseur est rtol(Optional-Default:1e-05-Type:float).
  • Le 4ème argument avec torch ou le 3ème argument avec un tenseur est atol(Optional-Default:1e-08-Type:float).
  • Le 5ème argument avec torch ou le 4ème argument avec un tenseur est égal_nan(Optional-Default:False-Type:bool) : *Mémos :
    • Si c'est vrai, nan et nan renvoient vrai.
    • En gros, nan et nan renvoient False.
  • La formule est |entrée - autre| <= rtol x |autre| 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() peut vérifier si deux tenseurs 0D ou plus D ont la même taille et les mêmes éléments, obtenant le scalaire d'une valeur booléenne comme indiqué ci-dessous :

*Mémos :

  • égal() peut être utilisé avec une torche ou un tenseur.
  • Le 1er argument (entrée) avec torch ou en utilisant un tenseur (Required-Type : tenseur de int, float, complexe ou bool).
  • Le 2ème argument avec torch ou le 1er argument avec un tenseur est autre (Required-Type : tensor of int, float, complexe ou 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn