LoslegenKostenlos loslegen

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

Kurs anzeigen

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_seq durch das Modell leitest.
  • Berechne den Loss basierend auf den vorhergesagten outputs und 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()}')
Code bearbeiten und ausführen