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
Instrucțiuni pentru exercițiu
- În metoda
.__init__(), definește un strat LSTM și atribuie-l luiself.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 stratuluiLSTM: 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