Začněte nyníZačněte zdarma

Síť LSTM

Jak už víš, prosté RNN buňky se v praxi moc nepoužívají. Oblíbenější alternativou, která výrazně lépe zvládá dlouhé sekvence, jsou buňky Long Short-Term Memory, neboli LSTM. V tomto cvičení si takovou LSTM síť sestavíš sám!

Nejdůležitější implementační rozdíl oproti RNN síti, kterou jsi postavil/a dříve, spočívá v tom, že LSTM buňky pracují se dvěma skrytými stavy místo jednoho. To znamená, že budeš muset tento druhý skrytý stav inicializovat a předat ho LSTM buňce.

torch a torch.nn jsou už naimportované, takže rovnou do kódování!

Toto cvičení je součástí kurzu

Intermediate Deep Learning with PyTorch

Zobrazit kurz

Pokyny k cvičení

  • V metodě .__init__() definuj vrstvu LSTM a přiřaď ji do self.lstm.
  • V metodě forward() inicializuj první skrytý stav dlouhodobé paměti c0 nulami.
  • V metodě forward() předej vrstvě LSTM všechny tři vstupy: vstupní data aktuálního časového kroku a n-tici obsahující oba skryté stavy.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód