Điểm attention bằng einsum
Trung bìnhPyTorchtensoreinsum4 test · 20 giây · sai số 1e-4
torch.einsum mô tả phép nhân tensor bằng chuỗi chỉ số — rất tiện cho attention nhiều đầu. Tính ma trận điểm S với S[b, h, i, j] = Σ_d Q[b, h, i, d] · K[b, h, j, d]:
torch.einsum('bhid,bhjd->bhij', Q, K) (tương đương Q @ K.transpose(-2, -1)).
Viết hàm
attention_scores(Q, K)Tham số
Q: tensor (B, H, T, d)K: tensor (B, H, S, d)
Trả về
Tensor (B, H, T, S).
Ví dụ
Tham số
Q = [[[[1,1,1],[1,1,1]]]] K = [[[[1,1,1]]]]
Kết quả
[[[[3.0],[3.0]]]]
Tham số
Q = [[[[0,1],[2,3]]]] K = [[[[1,0],[0,1]]]]
Kết quả
[[[[0.0,1.0],[2.0,3.0]]]]
Python · PyTorch
Bấm “Chạy thử” để gọi attention_scores() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.