PyTorch: пакетное внешнее добавление

#python #pytorch

#питон #pytorch

Вопрос:

У меня есть два тензора PyTorch: A и B оба имеют форму (b, c, 3) . Я хочу создать внешнее произведение C A и B , чтобы полученная форма была (b, c, 3, 3) , и заменить операцию умножения на сложение. Как мне это сделать?

Ответ №1:

Вы можете добавить соответствующее одноэлементное измерение:

 C = A[..., None]   B[..., None, :]
 

Например, с размерами пакета и канала, равными 1 ( b=1, c=1 ):

 import torch
A = torch.tensor([[[1, 2, 3.]]]) 
B = torch.tensor([[[4., 5., 6.]]])
A[..., None]   B[..., None, :]
Out[ ]:
tensor([[[[5., 6., 7.],
          [6., 7., 8.],
          [7., 8., 9.]]]])