Menyelesaikan decoder transformer
Saatnya membangun tubuh decoder transformer! Ini berarti menggabungkan kelas InputEmbeddings, PositionalEncoding, dan DecoderLayer yang telah Anda buat sebelumnya.
Latihan ini adalah bagian dari kursus
Model Transformer dengan PyTorch
Petunjuk latihan
- Definisikan daftar
num_layerslapisan decoder menggunakan list comprehension dan kelasDecoderLayer. - Definisikan sebuah lapisan linear untuk memetakan hidden state menjadi peluang kata.
- Lengkapi alur forward melalui lapisan-lapisan yang didefinisikan di
__init__. - Instansiasikan sebuah decoder transformer dan terapkan pada
input_tokensdantgt_mask.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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)