ComenzarEmpieza gratis

Completar el transformer decodificador

¡Es hora de construir el cuerpo del transformer decodificador! Esto significa combinar las clases InputEmbeddings, PositionalEncoding y DecoderLayer que creaste antes.

Este ejercicio forma parte del curso

Modelos Transformer con PyTorch

Ver curso

Instrucciones del ejercicio

  • Define una lista de capas del decodificador con num_layers usando una list comprehension y la clase DecoderLayer.
  • Define una capa lineal para proyectar los estados ocultos a probabilidades de palabras.
  • Completa el paso forward a través de las capas definidas en __init__.
  • Instancia un transformer decodificador y aplícalo a input_tokens y tgt_mask.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

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)
Editar y ejecutar código