DevGang
Авторизоваться

Методы equal(), eq() и ne() в PyTorch

В PyTorch методы equal(), eq() и ne() используются для сравнения значений в тензорах и выполнения логических операций. Они позволяют определить равенство или неравенство элементов.

Метод equal может проверить, что два тензора совпадают, как показано ниже:

  • equal() можно вызвать как из torch, так и из tensor.
  • Тензоры могут быть 0D или более D-тензорами.
import torch

tensor1 = torch.tensor([5, 9, 0, 1])
tensor2 = torch.tensor([5, 9, 0, 1])
torch.equal(tensor1, tensor2)
tensor1.equal(tensor2)
torch.equal(tensor2, tensor1)
tensor2.equal(tensor1)
# True

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

tensor1 = torch.tensor([5, 9, 0, 1])
tensor2 = torch.tensor([7, 9, 0, 1])
torch.equal(tensor1, tensor2)
tensor1.equal(tensor2)
torch.equal(tensor2, tensor1)
tensor2.equal(tensor1)
# False

tensor1 = torch.tensor([5, 9, 0, 1])
tensor2 = torch.tensor([[5, 9, 0, 1]])
torch.equal(tensor1, tensor2)
tensor1.equal(tensor2)
torch.equal(tensor2, tensor1)
tensor2.equal(tensor1)
# False

Метод eq может проверять равенство двух тензоров поэлементно, как показано ниже:

  • eq() может быть вызван как из torch, так и tensor.
  • Тензоры могут быть 0D или более D-тензорами.
  • В результате получается тензор с более высоким D, который имеет больше элементов.
import torch

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[3, 5, 4], [6, 3, 5]])
torch.eq(tensor1, tensor2)
tensor1.eq(tensor2)
torch.eq(tensor2, tensor1)
tensor2.eq(tensor1)
# tensor([[False, True, False], [False, False, True]])

tensor1 = torch.tensor([[5, 0, 3]])
tensor2 = torch.tensor([[5, 5, 5], [0, 0, 0], [3, 3, 3]])
torch.eq(tensor1, tensor2)
tensor1.eq(tensor2)
torch.eq(tensor2, tensor1)
tensor2.eq(tensor1)
# tensor([[True, False, False],
#         [False, True, False], 
#         [False, False, True]])

tensor1 = torch.tensor([[5, 0, 3], [6, 9, 1]])
tensor2 = torch.tensor([[[2, 7, 3], [6, 3, 1]],
                        [[5, 0, 4], [8, 9, 7]]])
torch.eq(tensor1, tensor2)
tensor1.eq(tensor2)
torch.eq(tensor2, tensor1)
tensor2.eq(tensor1)
# tensor([[[False, False, True], [True, False, True]],
#         [[True, True, False], [False, True, False]]])

tensor1 = torch.tensor([[5, 0, 3], [6, 9, 1]])
tensor2 = torch.tensor([[[2., 7., 3.], [6., 3., True]],
                        [[5+0j, False, 4+0j], [8+0j, 9+0j, 7+0j]]])
torch.eq(tensor1, tensor2)
tensor1.eq(tensor2)
torch.eq(tensor2, tensor1)
tensor2.eq(tensor1)
# tensor([[[False, False, True], [True, False, True]],
#         [[True, True, False], [False, True, False]]])

tensor1 = torch.tensor([[6, 9, 1], [5, 0, 3]])
tensor2 = torch.tensor([[[2, 7, 3], [6, 3, 1]],
                        [[5, 0, 4], [8, 9, 7]]])
torch.eq(tensor1, tensor2)
tensor1.eq(tensor2)
torch.eq(tensor2, tensor1)
tensor2.eq(tensor1)
# tensor([[[False, False, False], [False, False, False]],
#         [[False, False, False], [False, False, False]]])

Метод ne может проверять неравенство двух тензоров поэлементно, как показано ниже:

  • ne() может быть вызван как из torch, так и tensor.
  • Тензоры могут быть 0D или более D-тензорами.
  • В результате получается тензор с более высоким D, который имеет больше элементов.
  • ne() и not_equal() одинаковы, поскольку not_equal() это псевдоним ne().
import torch

tensor1 = torch.tensor(5)
tensor2 = torch.tensor([[3, 5, 4], [6, 3, 5]])
torch.ne(tensor1, tensor2)
tensor1.ne(tensor2)
torch.ne(tensor2, tensor1)
tensor2.ne(tensor1)
# tensor([[True, False, True], [True, True, False]])

tensor1 = torch.tensor([[5, 0, 3]])
tensor2 = torch.tensor([[5, 5, 5], [0, 0, 0], [3, 3, 3]])
torch.ne(tensor1, tensor2)
tensor1.ne(tensor2)
torch.ne(tensor2, tensor1)
tensor2.ne(tensor1)
# tensor([[False, True, True],
#         [True, False, True],
#         [True, True, False]])

tensor1 = torch.tensor([[5, 0, 3], [6, 9, 1]])
tensor2 = torch.tensor([[[2, 7, 3], [6, 3, 1]],
                        [[5, 0, 4], [8, 9, 7]]])
torch.ne(tensor1, tensor2)
tensor1.ne(tensor2)
torch.ne(tensor2, tensor1)
tensor2.ne(tensor1)
# tensor([[[True, True, False], [False, True, False]],
#         [[False, False, True], [True, False, True]]])

tensor1 = torch.tensor([[5, 0, 3], [6, 9, 1]])
tensor2 = torch.tensor([[[2., 7., 3.], [6., 3., True]],
                        [[5+0j, False, 4+0j], [8+0j, 9+0j, 7+0j]]])
torch.ne(tensor1, tensor2)
tensor1.ne(tensor2)
torch.ne(tensor2, tensor1)
tensor2.ne(tensor1)
# tensor([[[True, True, False], [False, True, False]],
#         [[False, False, True], [True, False, True]]])

tensor1 = torch.tensor([[6, 9, 1], [5, 0, 3]])
tensor2 = torch.tensor([[[2, 7, 3], [6, 3, 1]],
                        [[5, 0, 4], [8, 9, 7]]])
torch.ne(tensor1, tensor2)
tensor1.ne(tensor2)
torch.ne(tensor2, tensor1)
tensor2.ne(tensor1)
# tensor([[[True, True, True], [True, True, True]],
#         [[True, True, True], [True, True, True]]])

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу