ComenzarEmpieza gratis

La capa del decodificador

Al igual que los transformers de codificador, los transformers de decodificador también están formados por varias capas que utilizan multi-head attention y subcapas feed-forward. Intenta combinar estos componentes para construir una clase DecoderLayer.

Tienes disponibles las clases MultiHeadAttention y FeedForwardSubLayer para usarlas, junto con la tgt_mask que creaste.

Este ejercicio forma parte del curso

Modelos Transformer con PyTorch

Ver curso

Instrucciones del ejercicio

Completa el método forward() para pasar las incrustaciones de entrada por las capas definidas en el método __init__:

  • Realiza el cálculo de atención usando la tgt_mask proporcionada y las incrustaciones de entrada, x, para las matrices de consulta, clave y valor.
  • Aplica dropout y la primera normalización por capas, norm1.
  • Realiza el paso por la subcapa feed-forward, ff_sublayer.
  • Aplica dropout y la segunda normalización por capas, norm2.

Ejercicio interactivo práctico

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

class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, tgt_mask):
        # Perform the attention calculation
        attn_output = self.____
        # Apply dropout and the first layer normalization
        x = self.____(x + self.____(attn_output))
        # Pass through the feed-forward sublayer
        ff_output = self.____(x)
        # Apply dropout and the second layer normalization
        x = self.____(x + self.____(ff_output))
        return x
Editar y ejecutar código