Tạo mô hình transformer
Tại PyBooks, hệ thống gợi ý mà bạn đang phát triển cần khả năng hiểu sắc thái cảm xúc trong các bài đánh giá của người dùng tốt hơn. Bạn tin rằng việc dùng transformers — một kiến trúc tối tân — sẽ giúp đạt được điều đó. Bạn quyết định xây dựng một mô hình transformer có thể mã hóa cảm xúc trong các bài đánh giá để khởi động dự án.
Các gói sau đã được nhập sẵn cho bạn: torch, nn, optim.
Dữ liệu đầu vào gồm các câu như: "I love this product", "This is terrible", "Could be better" …
và các nhãn cảm xúc nhị phân tương ứng như: 1, 0, 0, ...
Dữ liệu đầu vào được chia và chuyển thành embeddings trong các biến sau:
train_sentences, train_labels, test_sentences, test_labels, token_embeddings
Bài tập này là một phần của khóa học
Deep Learning cho Văn bản với PyTorch
Hướng dẫn bài tập
- Khởi tạo transformer encoder.
- Định nghĩa lớp fully connected dựa trên số lớp cảm xúc.
- Trong phương thức forward, truyền đầu vào qua transformer encoder rồi đến lớp tuyến tính.
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 TransformerEncoder(nn.Module):
def __init__(self, embed_size, heads, num_layers, dropout):
super(TransformerEncoder, self).__init__()
# Initialize the encoder
self.encoder = nn.____(
nn.____(d_model=embed_size, nhead=heads),
num_layers=num_layers)
# Define the fully connected layer
self.fc = nn.Linear(embed_size, ____)
def forward(self, x):
# Pass the input through the transformer encoder
x = self.____(x)
x = x.mean(dim=1)
return self.fc(x)
model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()