PyTorch torch.nn.RNN Funktion
PyTorch torch.nn Referenzhandbuch
torch.nn.RNNEs ist das grundlegende rekurrente neuronale Netzwerkmodul in PyTorch.
Es ist die einfachste rekurrente Schicht, aber sie ist anfällig für das Problem des verschwindenden Gradienten.
Funktionsdefinition
torch.nn.RNN(input_size, hidden_size, num_layers=1, bias=True, batch_first=True, dropout=0, bidirectional=False)
Anwendungsbeispiele
Beispiel 1: Grundlegende Verwendung
Beispiel
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("Eingabe:", x.shape)
print("Ausgabe:", 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("Eingabe:", x.shape)
print("Ausgabe:", output.shape)
print("Hidden:", hidden.shape)
Beispiel 2: Mehrschichtiges RNN
Beispiel
import torch
import torch.nn as nn
# 3-schichtiges RNN mit 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("Eingabe:", x.shape)
print("Ausgabe:", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
import torch.nn as nn
# 3-schichtiges RNN mit 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("Eingabe:", x.shape)
print("Ausgabe:", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
Beispiel 3: Nichtlineare Aktivierung
Beispiel
import torch
import torch.nn as nn
# tanh wird standardmäßig als Aktivierungsfunktion verwendet
rnn = nn.RNN(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Ausgabeform:", out.shape)
print("RNN verwendet standardmäßig die tanh-Aktivierung")
import torch.nn as nn
# tanh wird standardmäßig als Aktivierungsfunktion verwendet
rnn = nn.RNN(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Ausgabeform:", out.shape)
print("RNN verwendet standardmäßig die tanh-Aktivierung")
Hinweise
Das einfache RNN hat das Problem des verschwindenden Gradienten; für lange Sequenzen werden LSTM oder GRU empfohlen.
Anwendungsfälle
- Einfache Sequenzaufgaben: kurze Sequenzen
- Lehrbeispiele: Verständnis der RNN-Prinzipien
- Schnelles Prototyping: einfache Baseline
Andere Erweiterungen