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
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()