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, PositionalEncoding và DecoderLayer 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
Hướng dẫn bài tập
- Định nghĩa một danh sách gồm
num_layerslớp decoder bằng list comprehension và lớpDecoderLayer. - Đị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_tokensvàtgt_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)