Kom igångKom igång gratis

Slutför avkodartransformatorn

Dags att bygga avkodartransformatorns stomme! Det innebär att kombinera klasserna InputEmbeddings, PositionalEncoding och DecoderLayer som du skapat tidigare.

Den här övningen är en del av kursen

Transformermodeller med PyTorch

Visa kurs

Övningsinstruktioner

  • Definiera en lista med num_layers avkodarlagrer med hjälp av en listomfattning och klassen DecoderLayer.
  • Definiera ett linjärt lager för att projicera de dolda tillstånden till ordtroligheter.
  • Slutför framåtpassagen genom de lager som definierats i __init__.
  • Instansiera en avkodartransformator och applicera den på input_tokens och tgt_mask.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod