Réseau LSTM
Comme vous le savez déjà, les cellules RNN simples sont peu utilisées en pratique. Une autre option, plus courante et plus efficace pour gérer de longues séquences, est la cellule Long Short-Term Memory (LSTM). Dans cet exercice, vous allez construire vous-même un réseau LSTM!
La principale différence d'implémentation par rapport au réseau RNN que vous avez créé auparavant vient du fait que les LSTM ont deux états cachés plutôt qu'un seul. Vous devrez donc initialiser cet état caché supplémentaire et le transmettre à la cellule LSTM.
torch et torch.nn ont déjà été importés pour vous, alors commencez à coder!
Cette activité fait partie du cours
Apprentissage profond intermédiaire avec PyTorch
Instructions de l’exercice
- Dans la méthode
.__init__(), définissez une couche LSTM et assignez-la àself.lstm. - Dans la méthode
forward(), initialisez le premier état caché de mémoire à long termec0avec des zéros. - Dans la méthode
forward(), transmettez les trois entrées à la coucheLSTM: les entrées à l'instant courant et un tuple contenant les deux états cachés.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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