Kom igångKom igång gratis

Avkodarlagret

Precis som kodartransformers är avkodartransformers också uppbyggda av flera lager som använder multi-head attention och feed-forward-dellager. Kombinera nu dessa komponenter för att bygga en DecoderLayer-klass.

Klasserna MultiHeadAttention och FeedForwardSubLayer finns tillgängliga för dig att använda, tillsammans med den tgt_mask du skapade.

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

Transformermodeller med PyTorch

Visa kurs

Övningsinstruktioner

Slutför forward()-metoden för att skicka indataembeddingarna genom de lager som definierats i __init__-metoden:

  • Utför uppmärksamhetsberäkningen med hjälp av den angivna tgt_mask och indataembeddingarna, x, för fråge-, nyckel- och värdematriserna.
  • Applicera dropout och det första normaliseringslagret, norm1.
  • Utför passet genom feed-forward-dellagret, ff_sublayer.
  • Applicera dropout och det andra normaliseringslagret, norm2.

Interaktiv övning med praktiskt arbete

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

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