ÎncepețiÎncepe gratuit

Rețea LSTM

Așa cum știi deja, celulele RNN simple nu prea sunt folosite în practică. O alternativă mai populară, care gestionează mult mai bine secvențele lungi, este reprezentată de celulele Long Short-Term Memory, sau LSTM. În acest exercițiu, vei construi chiar tu o rețea LSTM!

Cea mai importantă diferență față de rețeaua RNN pe care ai construit-o anterior vine din faptul că LSTM-urile au două stări ascunse în loc de una. Asta înseamnă că va trebui să inițializezi această stare ascunsă suplimentară și să o transmiți celulei LSTM.

torch și torch.nn au fost deja importate, așa că poți începe să scrii codul!

Acest exercițiu face parte din cursul

Deep Learning intermediar cu PyTorch

Vezi cursul

Instrucțiuni pentru exercițiu

  • În metoda .__init__(), definește un strat LSTM și atribuie-l lui self.lstm.
  • În metoda forward(), inițializează prima stare ascunsă de memorie pe termen lung, c0, cu zerouri.
  • În metoda forward(), transmite toate cele trei intrări stratului LSTM: intrările de la pasul de timp curent și o tuplă care conține cele două stări ascunse.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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
Editează și rulează codul