LoslegenKostenlos starten

Die Encoder-Transformer-Schicht

Mit einer definierten Klasse FeedForwardSubLayer hast du alle Bausteine, um eine Klasse EncoderLayer zu erstellen. Denk daran: Die Encoder-Schicht besteht typischerweise aus einem Multi-Head-Attention-Mechanismus und einer Feed-Forward-Teilschicht, jeweils mit Layer-Normalisierung und Dropout auf den Eingaben und Ausgaben der Teilschicht.

Die bereits von dir definierten Klassen stehen dir unter denselben Namen zur Verfügung, außerdem torch und torch.nn als nn.

Diese Übung ist Teil des Kurses

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

Übungsanweisungen

  • Vervollständige die Methode __init__, um MultiHeadAttention, FeedForwardSubLayer und zwei Layer-Normalisierungen zu instanziieren.
  • Vervollständige die Methode forward() und füge den Multi-Head-Attention-Mechanismus sowie die Feed-Forward-Teilschicht ein; verwende für den Aufmerksamkeitsmechanismus die bereitgestellte src_mark und die Eingabe-Embeddings x für die Query-, Key- und Value-Matrizen.

Interaktive praktische Übung

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

class EncoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        # Instantiate the layers
        self.self_attn = ____(d_model, num_heads)
        self.ff_sublayer = ____(d_model, d_ff)
        self.norm1 = ____
        self.norm2 = ____
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, src_mask):
        # Complete the forward method
        attn_output = self.____
        x = self.norm1(x + self.dropout(attn_output))
        ff_output = self.____
        x = self.norm2(x + self.dropout(ff_output))
        return x
Code bearbeiten und ausführen