PyTorch torch.nn.TransformerEncoderLayer Funktion
PyTorch torch.nn Referenzhandbuch
nn.TransformerEncoderLayerEs ist die einschichtige Struktur des Transformer-Encoders.
Er enthält Self-Attention- und Feed-Forward-Netzwerke und ist die Grundeinheit des vollständigen Encoders.
Funktionsdefinition
torch.nn.TransformerEncoderLayer(d_model, nhead, dim_feedforward=2048, dropout=0.1, activation='gelu', batch_first=True)
Parameters
d_model: Modell-Dimensionnhead: Anzahl der Attention-Headsdim_feedforward: Dimension der verborgenen FFN-Schicht
Anwendungsbeispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
import torch
import torch.nn as nn
# Encoder-Schicht
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True)
# Eingabe
x = torch.randn(32, 100, 512)
output = layer(x)
print("Eingabe:", x.shape, "-> Ausgabe:", output.shape)
import torch.nn as nn
# Encoder-Schicht
layer = nn.TransformerEncoderLayer(d_model=512, nhead=8, batch_first=True)
# Eingabe
x = torch.randn(32, 100, 512)
output = layer(x)
print("Eingabe:", x.shape, "-> Ausgabe:", output.shape)
Beispiel 2: Benutzerdefinierte Aktivierungsfunktion
Beispiel
import torch
import torch.nn as nn
# ReLU-Aktivierung verwenden
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("ReLU-Aktivierungsausgabe:", out.shape)
import torch.nn as nn
# ReLU-Aktivierung verwenden
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("ReLU-Aktivierungsausgabe:", out.shape)
Beispiel 3: Mehrschichtiges Stapeln
Beispiel
import torch
import torch.nn as nn
# Mehrere Schichten stapeln
layer = nn.TransformerEncoderLayer(256, 4, batch_first=True)
encoder = nn.Sequential(
Schicht,
nn.TransformerEncoderLayer(256, 4, batch_first=True),
nn.TransformerEncoderLayer(256, 4, batch_first=True)
)
x = torch.randn(4, 30, 256)
out = encoder(x)
print("Ausgabe des 3-schichtigen Encoders:", out.shape)
import torch.nn as nn
# Mehrere Schichten stapeln
layer = nn.TransformerEncoderLayer(256, 4, batch_first=True)
encoder = nn.Sequential(
Schicht,
nn.TransformerEncoderLayer(256, 4, batch_first=True),
nn.TransformerEncoderLayer(256, 4, batch_first=True)
)
x = torch.randn(4, 30, 256)
out = encoder(x)
print("Ausgabe des 3-schichtigen Encoders:", out.shape)
Verwendungsszenarien
- Aufbau des Encoders
- Modelle wie BERT
- Textverständnis
Weitere Erweiterungen