Tách đầu cho Multi-Head Attention

Trung bình

PyTorchtensorTransformer4 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.