Побитовые операции в Pytorch - PullRequest
0 голосов
/ 21 января 2020

Может ли кто-нибудь помочь мне, как выполнить побитовые AND операции над двумя тензорами в Pytorch 1.4?

Очевидно, я мог найти только NOT и XOR операции в официальном документе

Ответы [ 2 ]

1 голос
/ 21 января 2020

Я не вижу их в документах, но похоже, что &, |, __and__, __or__, __xor__, et c являются побитовыми:

>>> torch.tensor([1, 2, 3, 4]).__xor__(torch.tensor([1, 1, 1, 1]))
tensor([0, 3, 2, 5])
>>> torch.tensor([1, 2, 3, 4]) | torch.tensor([1, 1, 1, 1])
tensor([1, 3, 3, 5])
>>> torch.tensor([1, 2, 3, 4]) & torch.tensor([1, 1, 1, 1])
tensor([1, 0, 1, 0])
>>> torch.tensor([1, 2, 3, 4]).__and__(torch.tensor([1, 1, 1, 1]))
tensor([1, 0, 1, 0])

См. https://github.com/pytorch/pytorch/pull/1556

0 голосов
/ 21 января 2020

Проверьте это. В Torch нет побитовой и / или операции для тензоров. В Torch реализованы поэлементные операции, но не битовые.

Однако, если вы можете преобразовать каждый бит как отдельное измерение Tensor, вы можете использовать поэлементную операцию.

Например,

a = torch.Tensor{0,1,1,0}
b = torch.Tensor{0,1,0,1}

torch.cmul(a,b):eq(1)
0
1
0
0
[torch.ByteTensor of size 4]

torch.add(a,b):ge(1)
0
1
1
1
[torch.ByteTensor of size 4]

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...