Готовим следующую карточку…
С подвохомСредняя
Вопрос
В батче последовательности дополнены до общей длины. Найдите ошибку в реализации attention: почему она меняет масштаб выхода для коротких последовательностей и как исправить её так, чтобы padded-позиции не влияли на нормировку весов?
import torch
q = torch.randn(2, 4, 8)
k = torch.randn(2, 4, 8)
v = torch.randn(2, 4, 8)
key_valid = torch.tensor([[1, 1, 1, 1], [1, 1, 0, 0]], dtype=torch.bool)
scores = q @ k.transpose(-2, -1)
weights = torch.softmax(scores, dim=-1)
weights = weights * key_valid[:, None, :]
out = weights @ v
