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

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

Xem khóa học

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