PyTorch では isclose で等しい

Susan Sarandon
リリース: 2024-11-05 18:54:02
オリジナル
279 人が閲覧しました

isclose and equal in PyTorch

コーヒー買ってきて☕

*メモ:

  • 私の投稿では eq() と ne() について説明しています。
  • 私の投稿では gt() と lt() について説明しています。
  • 私の投稿では ge() と le() について説明しています。
  • 私の投稿では、torch.nan と torch.inf について説明しています。

isclose() は、最初の 0D またはそれ以上の D テンソルの 0 個以上の要素が 2 番目の 0D またはそれ以上の D テンソルの 0 個以上の要素と要素的に等しいかほぼ等しいかどうかをチェックし、0D またはそれ以上の要素を取得します。以下に示すように、0 個以上の要素の D テンソル:

*メモ:

  • isclose() はトーチまたはテンソルとともに使用できます。
  • トーチまたはテンソル (必須タイプ: int、float、complex、または bool のテンソル) を使用する 1 番目の引数 (入力)。
  • torch の 2 番目の引数、またはテンソルの 1 番目の引数は、other(必須型: int、float、complex、または bool の tensor) です。
  • torch の 3 番目の引数、または tensor の 2 番目の引数は rtol(Optional-Default:1e-05-Type:float) です。
  • torch の 4 番目の引数、または tensor の 3 番目の引数は atol(Optional-Default:1e-08-Type:float) です。
  • torch の 5 番目の引数、または tensor の 4 番目の引数は、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() は、2 つの 0D または複数の D テンソルが同じサイズと要素を持つかどうかをチェックし、以下に示すようにブール値のスカラーを取得します。

*メモ:

  • equal() はトーチまたはテンソルとともに使用できます。
  • トーチまたはテンソル (必須タイプ: int、float、complex、または bool のテンソル) を使用する 1 番目の引数 (入力)。
  • torch の 2 番目の引数、または tensor の 1 番目の引数は other(必須の型: int、float、complex、または bool の tensor) です。
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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート