ComeçarComece de graça

A camada do decodificador

Assim como os transformadores do codificador, os transformadores do decodificador também são compostos por várias camadas que usam multi-head attention e subcamadas feed-forward. Tente combinar esses componentes para construir uma classe DecoderLayer.

As classes MultiHeadAttention e FeedForwardSubLayer estão disponíveis para você usar, juntamente com a tgt_mask que você criou.

Este exercício faz parte do curso

Modelos Transformer com PyTorch

Ver curso

Instruções do exercício

Complete o método forward() para passar as embeddings de entrada pelas camadas definidas no método __init__:

  • Realize o cálculo de atenção usando a tgt_mask fornecida e as embeddings de entrada, x, para as matrizes de query, key e value.
  • Aplique dropout e a primeira normalização de camada, norm1.
  • Faça a passagem pela subcamada feed-forward, ff_sublayer.
  • Aplique dropout e a segunda normalização de camada, norm2.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

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 e executar o código