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

Huấn luyện và kiểm thử mô hình Transformer

Với mô hình TransformerEncoder đã sẵn sàng, bước tiếp theo tại PyBooks là huấn luyện mô hình trên một số đánh giá mẫu và đánh giá hiệu năng của nó. Việc huấn luyện trên các đánh giá mẫu sẽ giúp PyBooks nắm được xu hướng cảm xúc trong kho dữ liệu đồ sộ của họ. Khi đạt được một mô hình hoạt động tốt, PyBooks có thể tự động hóa phân tích cảm xúc, giúp độc giả nhận được gợi ý và phản hồi sâu sắc.

Các gói sau đã được nhập sẵn cho bạn: torch, nn, optim.

Thực thể model của lớp TransformerEncoder, token_embeddings, cùng với train_sentences, train_labels, test_sentences, test_labels đã được tải sẵn cho bạn.

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

  • Trong vòng lặp huấn luyện, tách câu thành các token và xếp chồng (stack) các embedding.
  • Đưa gradient về 0 và thực hiện lan truyền ngược (backward).
  • Trong hàm predict, tắt tính toán gradient rồi lấy dự đoán cảm xúc.

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.

for epoch in range(5):  
    for sentence, label in zip(train_sentences, train_labels):
        # Split the sentences into tokens and stack the embeddings
        tokens = ____
        data = torch.____([token_embeddings[token] for token in ____], dim=1)
        output = model(data)
        loss = criterion(output, torch.tensor([label]))
        # Zero the gradients and perform a backward pass
        optimizer.____()
        loss.____()
        optimizer.step()
        print(f"Epoch {epoch}, Loss: {loss.item()}")

def predict(sentence):
    model.eval()
    # Deactivate the gradient computations and get the sentiment prediction.
    with torch.____():
        tokens = sentence.split()
        data = torch.stack([token_embeddings.get(token, torch.rand((1, 512))) for token in tokens], dim=1)
        output = model(data)
        predicted = torch.____(output, dim=1)
        return "Positive" if predicted.item() == 1 else "Negative"

sample_sentence = "This product can be better"
print(f"'{sample_sentence}' is {predict(sample_sentence)}")
Chỉnh sửa và Chạy Mã