LoslegenKostenlos loslegen

Ein Transformermodell erstellen

Bei PyBooks braucht die Empfehlungskomponente, an der du arbeitest, feinere Fähigkeiten, um die Stimmung in Nutzerbewertungen zu verstehen. Du glaubst, dass Transformer als State-of-the-Art-Architektur dabei helfen können. Du entscheidest dich, ein Transformermodell zu bauen, das die Stimmung in den Bewertungen encodiert, um das Projekt zu starten.

Die folgenden Pakete wurden für dich importiert: torch, nn, optim.

Die Eingabedaten enthalten Sätze wie: "I love this product", "This is terrible", "Could be better" … und ihre jeweiligen binären Sentiment-Labels, zum Beispiel: 1, 0, 0, ...

Die Eingabedaten wurden aufgeteilt und in Embeddings umgewandelt in den folgenden Variablen: train_sentences, train_labels, test_sentences, test_labels, token_embeddings

Diese Übung ist Teil des Kurses

Deep Learning für Text mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Initialisiere den Transformer-Encoder.
  • Definiere die vollständig verbundene Schicht basierend auf der Anzahl der Sentimentklassen.
  • Leite in der Forward-Methode die Eingabe durch den Transformer-Encoder und anschließend durch die lineare Schicht.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

class TransformerEncoder(nn.Module):
    def __init__(self, embed_size, heads, num_layers, dropout):
        super(TransformerEncoder, self).__init__()
        # Initialize the encoder 
        self.encoder = nn.____(
            nn.____(d_model=embed_size, nhead=heads),
            num_layers=num_layers)
        # Define the fully connected layer
        self.fc = nn.Linear(embed_size, ____)

    def forward(self, x):
        # Pass the input through the transformer encoder 
        x = self.____(x)
        x = x.mean(dim=1) 
        return self.fc(x)

model = TransformerEncoder(embed_size=512, heads=8, num_layers=3, dropout=0.5)
optimizer = optim.Adam(model.parameters(), lr=1e-3)
criterion = nn.CrossEntropyLoss()
Code bearbeiten und ausführen