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
Oefeninstructies
- Definieer in de methode
.__init__()een LSTM-laag en wijs die toe aanself.lstm. - Initialiseer in de methode
forward()de eerste verborgen toestand van het langetermijngeheugenc0met nullen. - Geef in de methode
forward()alle drie de inputs door aan deLSTM-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