LoslegenKostenlos starten

Die Decoder-Schicht

Genau wie Encoder-Transformer bestehen auch Decoder-Transformer aus mehreren Schichten, die Multi-Head-Attention und Feed-Forward-Teilschichten nutzen. Versuche, diese Komponenten zu kombinieren und eine DecoderLayer-Klasse zu bauen.

Die Klassen MultiHeadAttention und FeedForwardSubLayer stehen dir zur Verfügung – ebenso wie die von dir erstellte tgt_mask.

Diese Übung ist Teil des Kurses

<Kurs>Transformer-Modelle mit PyTorch</Kurs>
Kurs ansehen

Übungsanweisungen

Vervollständige die Methode forward(), damit die Eingabe-Einbettungen die im __init__ definierten Schichten durchlaufen:

  • Führe die Attention-Berechnung mit der bereitgestellten tgt_mask und den Eingabe-Einbettungen x für Query-, Key- und Value-Matrizen aus.
  • Wende dropout und die erste Layer-Normalisierung norm1 an.
  • Führe den Durchlauf durch die Feed-Forward-Teilschicht ff_sublayer aus.
  • Wende dropout und die zweite Layer-Normalisierung norm2 an.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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
Code bearbeiten und ausführen