У меня есть 4-х мерный параметр тензора факела, определенный следующим образом:
nn.parameter.Parameter(data=torch.Tensor((13,13,13,13)), requires_grad=True)
и четыре тензора с dims (batch_size, 13) (или один тензор с dims (batch_size, 4,13)). Я хотел бы получить тензор с dims (batch_size), равный формуле в конце этого изображения: [EDIT: я сделал ошибку на первом рисунке, я исправил его] Я видел в документации к факелу функцию tensordot, но мне не удается заставить ее работать самостоятельно.
i
, но он отличается от переменной mute, для которой вы выполняете самую внешнюю сумму, верно? - person trialNerror   schedule 20.01.2021result = (A[None, :, :, :, :] * X[:, :, None, None, None] * Y[:, None, :, None, None] * Z[:, None, None, :, None] * T[:, None, None, None, :]).flatten(1).sum(dim=1)
то, что вы хотите? Если да, я могу опубликовать ответ с объяснением. - person jodag   schedule 20.01.2021None
просто используется для вставки единичных размеров, как в numpy. Это транслируемый эквивалент выражения einsum ответа Шая. - person jodag   schedule 20.01.2021