Tách đầu cho Multi-Head Attention
Trung bìnhPyTorchtensorTransformer4 test · 20 giây · sai số 1e-4
Trong Transformer viết bằng PyTorch, đầu vào attention có shape (B, T, C). Để chạy h đầu song song, ta đổi thành (B, h, T, C/h):
1. view thành (B, T, h, C/h) — đầu thứ i giữ các cột i·(C/h) … (i+1)·(C/h) − 1
2. transpose(1, 2) thành (B, h, T, C/h)
Bài này luyện thao tác shape — kỹ năng quan trọng nhất khi đọc code mô hình.
Viết hàm
split_heads(x, num_heads)Tham số
x: tensor (B, T, C)num_heads: h, chia hết C
Trả về
Tensor (B, h, T, C/h).
Ví dụ
Tham số
x = [[[0,1,2,3],[4,5,6,7]]] num_heads = 2
Kết quả
[[[[0.0,1.0],[4.0,5.0]],[[2.0,3.0],[6.0,7.0]]]]
[[[[0,1],[4,5]], [[2,3],[6,7]]]]
Tham số
x = [[[0,1,2,3,4,5]]] num_heads = 3
Kết quả
[[[[0.0,1.0]],[[2.0,3.0]],[[4.0,5.0]]]]
Bài tiếp theo: Lấy xác suất của nhãn đúng →
Python · PyTorch
Bấm “Chạy thử” để gọi split_heads() với 2 ví dụ trong đề và so sánh kết quả. Dùng print() thoải mái để gỡ lỗi.