Полагаю, x
- это какой-то пример с партиями, а w
- соответствующий вес. В этом случае вы можете просто сделать:
out = x @ w.T
, что является тензорным умножением , а не поэлементным. Вы не можете выполнить поэлементное умножение, чтобы получить такую форму, и эта операция не будет иметь смысла. Все, что вы могли бы сделать, - это каким-то образом unsqueeze
обеим матрицам трансформировать их форму и применить некоторые операции к измерению, которые вы по какой-то причине не хотите, например:
x : torch.Size([10, 120, 180, 30, 1])
W: torch.Size([1, 1, 1, 30, 64]) # transposition would be needed as well
После таких unsqueezing
Вы можете сделать x*w
и sum
или mean
вдоль третьего dim
, чтобы получить желаемую форму.
Для ясности оба способа не эквивалентны.