Fonction torch.nn.TransformerEncoderLayer de PyTorch
Manuel de référence torch.nn de PyTorch
nn.TransformerEncoderLayerIl s'agit de la structure à une seule couche de l'encodeur Transformer.
Il contient des réseaux d'auto-attention et de propagation avant, et constitue l'unité de base de l'encodeur complet.
Définition de fonction
torch.nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation='gelu', batch_first=True)
Parameters
d_model: Dimension du modèlenhead: Nombre de têtes d'attentiondim_feedforward: Dimension de la couche cachée FFN
Exemples d'utilisation
Exemple 1 : Utilisation de base
Exemple
import torch
import torch.nn as nn
# Couche d'encodeur
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True)
# Entrée
x = torch.randn(32, 100, 512)
output = layer(x)
print("Entrée :", x.shape, "-> Sortie :", output.shape)
import torch.nn as nn
# Couche d'encodeur
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True)
# Entrée
x = torch.randn(32, 100, 512)
output = layer(x)
print("Entrée :", x.shape, "-> Sortie :", output.shape)
Exemple 2 : Fonction d'activation personnalisée
Exemple
import torch
import torch.nn as nn
# Utiliser l'activation ReLU
layer_relu = nn.TransformerEncoderLayer(d_model=256, nhead=4, activation='relu', batch_first=True)
x = torch.randn(8, 50, 256)
out = layer_relu(x)
print("Sortie de l'activation ReLU :", out.shape)
import torch.nn as nn
# Utiliser l'activation ReLU
layer_relu = nn.TransformerEncoderLayer(d_model=256, nhead=4, activation='relu', batch_first=True)
x = torch.randn(8, 50, 256)
out = layer_relu(x)
print("Sortie de l'activation ReLU :", out.shape)
Exemple 3 : Empilement multicouche
Exemple
import torch
import torch.nn as nn
# Empiler plusieurs couches
layer = nn.TransformerEncoderLayer(256, 4, batch_first=True)
encoder = nn.Sequential(
couche,
nn.TransformerEncoderLayer(256, 4, batch_first=True),
nn.TransformerEncoderLayer(256, 4, batch_first=True)
)
x = torch.randn(4, 30, 256)
out = encoder(x)
print("Sortie de l'encodeur à 3 couches :", out.shape)
import torch.nn as nn
# Empiler plusieurs couches
layer = nn.TransformerEncoderLayer(256, 4, batch_first=True)
encoder = nn.Sequential(
couche,
nn.TransformerEncoderLayer(256, 4, batch_first=True),
nn.TransformerEncoderLayer(256, 4, batch_first=True)
)
x = torch.randn(4, 30, 256)
out = encoder(x)
print("Sortie de l'encodeur à 3 couches :", out.shape)
Scénarios d'utilisation
- Construction de l'encodeur
- Modèles tels que BERT
- Compréhension du texte
Autres extensions