Xây dựng mô hình GRU cho văn bản
Tại PyBooks, đội ngũ rất ấn tượng với hiệu năng của hai mô hình bạn đã huấn luyện trước đó. Tuy nhiên, để đạt chất lượng cao nhất, họ muốn đảm bảo lựa chọn được mô hình tốt nhất cho nhiệm vụ hiện tại. Vì vậy, họ đề nghị bạn mở rộng dự án bằng cách thử nghiệm khả năng của các mô hình GRU, vốn nổi tiếng về hiệu quả và hiệu suất trong các bài toán phân loại văn bản. Nhiệm vụ mới của bạn là áp dụng mô hình GRU để phân loại các bài viết từ bộ dữ liệu Newsgroup vào các nhóm sau:
rec.autos, sci.med, và comp.graphics.
Các gói sau đã được nạp sẵn cho bạn: torch, nn, optim.
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
- Hoàn thiện lớp GRU với các tham số cần thiết.
- Khởi tạo mô hình với cùng các tham số đó.
- Huấn luyện mô hình: truyền tham số vào hàm criterion và lan truyền ngược hàm mất mát.
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.
# Complete the GRU model
class GRUModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(GRUModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.gru = ____
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.gru(x, h0)
out = out[:, -1, :]
out = self.fc(out)
return out
# Initialize the model
gru_model = ____
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(gru_model.parameters(), lr=0.01)
# Train the model and backpropagate the loss after initialization
for epoch in range(15):
optimizer.zero_grad()
outputs = ____
loss = criterion(____, y_train_seq)
____
optimizer.step()
print(f'Epoch: {epoch+1}, Loss: {loss.item()}')