LoslegenKostenlos loslegen

Ein GRU-Modell für Text erstellen

Bei PyBooks ist das Team von der Leistung der beiden Modelle, die du zuvor trainiert hast, beeindruckt. Auf der Suche nach Exzellenz möchten sie jedoch sicherstellen, dass das bestmögliche Modell für die jeweilige Aufgabe ausgewählt wird. Daher haben sie dich gebeten, das Projekt zu erweitern und mit den Fähigkeiten von GRU-Modellen zu experimentieren, die für ihre Effizienz und Wirksamkeit bei Textklassifikationsaufgaben bekannt sind. Deine neue Aufgabe ist es, das GRU-Modell anzuwenden, um Artikel aus dem Newsgroup-Datensatz in die folgenden Kategorien einzuordnen:

rec.autos, sci.med und comp.graphics.

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

Diese Übung ist Teil des Kurses

Deep Learning für Text mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Vervollständige die GRU-Klasse mit den benötigten Parametern.
  • Initialisiere das Modell mit denselben Parametern.
  • Trainiere das Modell: übergib die Parameter an die Kriteriums-Funktion und führe Backpropagation auf den Loss aus.

Interaktive Übung

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

# Complete the GRU model
class GRUModel(nn.Module):
    def __init__(self, input_size, hidden_size, num_layers, num_classes):
        super(GRUModel, self).__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.gru = ____
        self.fc = nn.Linear(hidden_size, num_classes)       
    def forward(self, x):
        h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size) 
        out, _ = self.gru(x, h0)
        out = out[:, -1, :] 
        out = self.fc(out)
        return out

# Initialize the model
gru_model = ____
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(gru_model.parameters(), lr=0.01)

# Train the model and backpropagate the loss after initialization
for epoch in range(15): 
    optimizer.zero_grad()
    outputs = ____
    loss = criterion(____, y_train_seq)
    ____
    optimizer.step()
    print(f'Epoch: {epoch+1}, Loss: {loss.item()}')
Code bearbeiten und ausführen