CommencezCommencez gratuitement

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

Voir le cours

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 terme c0 avec des zéros.
  • Dans la méthode forward(), transmettez les trois entrées à la couche LSTM : 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
Modifier et exécuter le code