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

Hoàn thiện decoder transformer

Đến lúc xây dựng phần thân của decoder transformer! Bạn sẽ kết hợp các lớp InputEmbeddings, PositionalEncodingDecoderLayer mà bạn đã tạo trước đó.

Bài tập này là một phần của khóa học

Các mô hình Transformer với PyTorch

Xem khóa học

Hướng dẫn bài tập

  • Định nghĩa một danh sách gồm num_layers lớp decoder bằng list comprehension và lớp DecoderLayer.
  • Định nghĩa một lớp linear để chiếu các hidden state thành xác suất từ.
  • Hoàn thiện bước truyền xuôi qua các lớp đã định nghĩa trong __init__.
  • Khởi tạo một decoder transformer và áp dụng nó lên input_tokenstgt_mask.

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 TransformerDecoder(nn.Module):
    def __init__(self, vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length):
        super(TransformerDecoder, self).__init__()
        self.embedding = InputEmbeddings(vocab_size, d_model)
        self.positional_encoding = PositionalEncoding(d_model, max_seq_length)
        # Define the list of decoder layers and linear layer
        self.layers = nn.____([____(d_model, num_heads, d_ff, dropout) for _ in range(num_layers)])
        # Define a linear layer to project hidden states to likelihoods
        self.fc = ____
  
    def forward(self, x, tgt_mask):
        # Complete the forward pass
        x = self.____(x)
        x = self.____(x)
        for layer in self.layers:
            x = ____
        x = self.____(x)
        return F.log_softmax(x, dim=-1)

# Instantiate a decoder transformer and apply it to input_tokens and tgt_mask
transformer_decoder = ____(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)   
output = ____
print(output)
print(output.shape)
Chỉnh sửa và Chạy Mã