Fonction PyTorch torch.nn.RNN
Manuel de référence torch.nn de PyTorch
torch.nn.RNNC'est le module de base de réseau de neurones récurrent dans PyTorch.
C'est la couche récurrente la plus simple, mais elle est sujette au problème de disparition du gradient.
Définition de fonction
torch.nn.RNN(input_size, hidden_size, num_layers=1, bias=True, batch_first=True, dropout=0, bidirectional=False)
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
import torch
import torch.nn as nn
rnn = nn.RNN(input_size=256, hidden_size=128, num_layers=2, batch_first=True)
x = torch.randn(4, 10, 256)
output, hidden = rnn(x)
print("Entrée :", x.shape)
print("Sortie :", output.shape)
print("Hidden:", hidden.shape)
import torch.nn as nn
rnn = nn.RNN(input_size=256, hidden_size=128, num_layers=2, batch_first=True)
x = torch.randn(4, 10, 256)
output, hidden = rnn(x)
print("Entrée :", x.shape)
print("Sortie :", output.shape)
print("Hidden:", hidden.shape)
Exemple 2 : RNN multicouche
Exemple
import torch
import torch.nn as nn
# RNN à 3 couches avec dropout
rnn = nn.RNN(128, 256, num_layers=3, dropout=0.3, batch_first=True)
x = torch.randn(2, 50, 128)
out, h = rnn(x)
print("Entrée :", x.shape)
print("Sortie :", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
import torch.nn as nn
# RNN à 3 couches avec dropout
rnn = nn.RNN(128, 256, num_layers=3, dropout=0.3, batch_first=True)
x = torch.randn(2, 50, 128)
out, h = rnn(x)
print("Entrée :", x.shape)
print("Sortie :", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
Exemple 3 : Activation non linéaire
Exemple
import torch
import torch.nn as nn
# tanh est utilisée comme fonction d'activation par défaut
rnn = nn.RNN(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Forme de sortie :", out.shape)
print("RNN utilise tanh comme fonction d'activation par défaut")
import torch.nn as nn
# tanh est utilisée comme fonction d'activation par défaut
rnn = nn.RNN(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Forme de sortie :", out.shape)
print("RNN utilise tanh comme fonction d'activation par défaut")
Notes
Le RNN de base souffre du problème de disparition du gradient ; pour les longues séquences, LSTM ou GRU est recommandé.
Cas d'utilisation
- Tâches séquentielles simples: séquences courtes
- Exemples pédagogiques: compréhension des principes des RNN
- Prototypage rapide: base de référence simple
Autres extensions