Внешняя сумма и т. Д. В pytorch - PullRequest
0 голосов
/ 12 октября 2018

Numpy предлагает оптимизированные внешние операции для любой функции RxR -> R, например np.multiply.outer или np.subtract.outer, с поведением:

>>> np.subtract.outer([6, 5, 4], [3, 2, 1])
array([[3, 4, 5],
       [2, 3, 4],
       [1, 2, 3]])

Pytorch , по-видимому, не предлагает такиефункция (или я ее упустил).
Какой самый лучший / обычный / самый быстрый / самый чистый способ сделать это с тензорами горелки?

1 Ответ

0 голосов
/ 19 октября 2018

Согласно документации :

Многие операции PyTorch поддерживают семантику NumPy Broadcasting.

Внешнее вычитание - это транслированное вычитание из 2d-массивав массив 1d, так что по сути вы можете изменить первый массив на (3, 1), а затем вычесть из него второй массив:

x = torch.Tensor([6, 5, 4])
y = torch.Tensor([3, 2, 1])

x.reshape(-1, 1) - y
#tensor([[3., 4., 5.],
#        [2., 3., 4.],
#        [1., 2., 3.]])
...