Aan de slagGa gratis aan de slag

LSTM-netwerk

Zoals je al weet, worden gewone RNN-cellen in de praktijk niet zo vaak gebruikt. Een veelgebruikt alternatief dat lange reeksen veel beter aankan, zijn Long Short-Term Memory-cellen, of LSTM’s. In deze oefening ga je zelf een LSTM-netwerk bouwen!

Het belangrijkste implementatieverschil met het RNN-netwerk dat je eerder hebt gebouwd, is dat LSTM’s twee in plaats van één verborgen toestand hebben. Dit betekent dat je deze extra verborgen toestand moet initialiseren en doorgeven aan de LSTM-cel.

torch en torch.nn zijn al voor je geïmporteerd, dus aan de slag!

Deze oefening maakt deel uit van de cursus

Gevorderde Deep Learning met PyTorch

Cursus bekijken

Oefeninstructies

  • Definieer in de methode .__init__() een LSTM-laag en wijs die toe aan self.lstm.
  • Initialiseer in de methode forward() de eerste verborgen toestand van het langetermijngeheugen c0 met nullen.
  • Geef in de methode forward() alle drie de inputs door aan de LSTM-laag: de inputs van de huidige tijdstap en een tuple met de twee verborgen toestanden.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

class Net(nn.Module):
    def __init__(self, input_size):
        super().__init__()
        # Define lstm layer
        ____ = ____(
            input_size=1,
            hidden_size=32,
            num_layers=2,
            batch_first=True,
        )
        self.fc = nn.Linear(32, 1)

    def forward(self, x):
        h0 = torch.zeros(2, x.size(0), 32)
        # Initialize long-term memory
        c0 = ____
        # Pass all inputs to lstm layer
        out, _ = ____
        out = self.fc(out[:, -1, :])
        return out
Code bewerken en uitvoeren