Ein LSTM-Modell für Text aufbauen
Bei PyBooks arbeitet das Team ständig daran, die Nutzererfahrung mit den neuesten technologischen Entwicklungen zu verbessern. In diesem Sinne hat man dir eine wichtige Aufgabe übertragen. Du sollst das Potenzial eines weiteren leistungsstarken Werkzeugs untersuchen: LSTM, bekannt dafür, komplexere Muster in Daten zu erfassen. Du arbeitest mit demselben Newsgroup-Datensatz, und das Ziel bleibt unverändert: Nachrichtenartikel in drei 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
- Richte ein LSTM-Modell ein, indem du die LSTM- und linearen Schichten mit den notwendigen Parametern vervollständigst.
- Initialisiere das Modell mit den erforderlichen Parametern.
- Trainiere das LSTM-Modell, indem du die Gradienten auf null setzt und die Eingabedaten
X_train_seqdurch das Modell leitest. - Berechne den Loss basierend auf den vorhergesagten
outputsund den wahren Labels.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Initialize the LSTM and the output layer with parameters
class LSTMModel(nn.Module):
def __init__(self, input_size, hidden_size, num_layers, num_classes):
super(LSTMModel, self).__init__()
self.hidden_size = hidden_size
self.num_layers = num_layers
self.lstm = nn.LSTM(____, ____, ____, batch_first=True)
self.fc = nn.Linear(____, ____)
def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)
out, _ = self.lstm(x, (h0, c0))
out = out[:, -1, :]
out = self.fc(out)
return out
# Initialize model with required parameters
lstm_model = LSTMModel(____, ____, ____, ____)
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(lstm_model.parameters(), lr=0.01)
# Train the model by passing the correct parameters and zeroing the gradient
for epoch in range(10):
optimizer.____
outputs = lstm_model(____)
loss = criterion(____, y_train_seq)
loss.backward()
optimizer.step()
print(f'Epoch: {epoch+1}, Loss: {loss.item()}')