Bắt đầu với MultiHeadAttentionClass
Sau khi bạn đã xây dựng các lớp để tạo token embedding và positional embedding, giờ là lúc định nghĩa một lớp để thực hiện multi-head attention. Trước hết, hãy thiết lập các tham số dùng cho phép tính attention và các tầng linear dùng để biến đổi embedding đầu vào thành các ma trận query, key, và value, cùng một tầng để chiếu các trọng số attention đã kết hợp trở lại thành embedding.
torch.nn đã được import dưới tên nn.
Bài tập này là một phần của khóa học
Các mô hình Transformer với PyTorch
Hướng dẫn bài tập
- Tính kích thước embedding mà mỗi attention head sẽ xử lý,
head_dim. - Định nghĩa ba tầng đầu vào (cho query, key, và value) và một tầng đầu ra; loại bỏ tham số bias khỏi các tầng đầu vào.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, num_heads):
super().__init__()
# Calculate the dimensions each head will process
self.num_heads = num_heads
self.d_model = d_model
self.head_dim = ____
# Define the three input layers and one output layer
self.query_linear = nn.Linear(____, ____, bias=False)
self.key_linear = nn.Linear(____)
self.value_linear = ____
self.output_linear = ____