Zacznij terazZacznij za darmo

Sieć LSTM

Jak już wiesz, zwykłe komórki RNN rzadko stosuje się w praktyce. Częściej wybieraną alternatywą, która znacznie lepiej radzi sobie z długimi sekwencjami, są komórki Long Short-Term Memory, czyli LSTM. W tym ćwiczeniu samodzielnie zbudujesz sieć LSTM!

Najważniejsza różnica implementacyjna w porównaniu z wcześniej zbudowaną siecią RNN wynika z tego, że LSTM korzysta z dwóch stanów ukrytych zamiast jednego. Trzeba więc zainicjalizować ten dodatkowy stan i przekazać go do komórki LSTM.

torch i torch.nn są już zaimportowane – możesz zaczynać!

To ćwiczenie jest częścią kursu

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Zobacz kurs

Instrukcje do ćwiczenia

  • W metodzie .__init__() zdefiniuj warstwę LSTM i przypisz ją do self.lstm.
  • W metodzie forward() zainicjalizuj pierwszy długoterminowy stan ukryty c0 zerami.
  • W metodzie forward() przekaż do warstwy LSTM wszystkie trzy dane wejściowe: dane z bieżącego kroku czasowego oraz krotkę zawierającą dwa stany ukryte.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
Edytuj i uruchom kod