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