PyTorch에서는 isclose이고 같음

Susan Sarandon
풀어 주다: 2024-11-05 18:54:02
원래의
296명이 탐색했습니다.

isclose and equal in PyTorch

커피 한잔 사주세요😄

*메모:

  • 내 게시물에서는 eq() 및 ne()에 대해 설명합니다.
  • 내 게시물에서는 gt() 및 lt()에 대해 설명합니다.
  • 내 게시물에는 ge() 및 le()에 대한 설명이 나와 있습니다.
  • 내 게시물에는 torch.nan과 torch.inf가 설명되어 있습니다.

isclose()는 첫 번째 0D 이상의 D 텐서의 0개 이상의 요소가 두 번째 0D 이상의 D 텐서의 0개 이상의 요소와 요소별로 같거나 거의 같은지 확인하여 0D 이상의 요소를 얻을 수 있습니다. 아래와 같이 0개 이상의 요소로 구성된 D 텐서:

*메모:

  • isclose()는 토치나 텐서와 함께 사용할 수 있습니다.
  • 토치 또는 텐서(필수 유형: int, float, complex 또는 bool의 텐서)를 사용하는 첫 번째 인수(입력).
  • torch의 두 번째 인수 또는 텐서의 첫 번째 인수는 other(필수 유형: int, float, complex 또는 bool의 텐서)입니다.
  • torch의 세 번째 인수 또는 tensor의 두 번째 인수는 rtol(Optional-Default:1e-05-Type:float)입니다.
  • torch의 네 번째 인수 또는 텐서의 세 번째 인수는 atol(Optional-Default:1e-08-Type:float)입니다.
  • torch의 5번째 인수 또는 텐서의 4번째 인수는 equal_nan(Optional-Default:False-Type:bool)입니다. *메모:
    • True이면 nan과 nan은 True를 반환합니다.
    • 기본적으로 nan과 nan은 False를 반환합니다.
  • 공식은 |입력 - 기타| <= rtol x |기타| 아톨.
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()은 토치나 텐서와 함께 사용할 수 있습니다.
  • 토치 또는 텐서(필수 유형: int, float, complex 또는 bool의 텐서)를 사용하는 첫 번째 인수(입력).
  • torch의 두 번째 인수 또는 텐서의 첫 번째 인수는 other(필수 유형: 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에서는 isclose이고 같음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿