Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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()}')
Chỉnh sửa và Chạy Mã