Xây dựng transformer encoder–decoder
Giờ đây bạn đã cập nhật lớp DecoderLayer, và các thay đổi tương ứng cũng đã được áp dụng cho TransformerDecoder, bạn đã sẵn sàng ghép mọi thứ lại với nhau. Vì bạn đã xây dựng các lớp theo kiểu mô-đun và phân cấp, bạn chỉ cần khởi tạo hai lớp để dựng nên transformer encoder–decoder: TransformerDecoder và TransformerEncoder.
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
- Hoàn thiện bước
forward()để tính toán đầu ra của encoder và decoder. - Khởi tạo và gọi transformer trên
input_tokensvớisrc_mask,tgt_mask, vàcross_maskđã cho.
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 Transformer(nn.Module):
def __init__(self, vocab_size, d_model, num_heads, num_layers, d_ff, max_seq_length, dropout):
super().__init__()
self.encoder = TransformerEncoder(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)
self.decoder = TransformerDecoder(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)
def forward(self, x, src_mask, tgt_mask, cross_mask):
# Complete the forward pass
encoder_output = self.encoder(____, ____)
decoder_output = self.decoder(____, ____, tgt_mask, cross_mask)
return decoder_output
# Instantiate and call the transformer
transformer = ____(vocab_size, d_model, num_heads, num_layers, d_ff, max_seq_length, dropout)
outputs = ____
print(outputs)
print(outputs.shape)