Функция PyTorch torch.nn.RNN
Справочное руководство PyTorch torch.nn
torch.nn.RNNЭто базовый модуль рекуррентной нейронной сети в PyTorch.
Это самый простой рекуррентный слой, но он подвержен проблеме исчезающего градиента.
Определение функции
torch.nn.RNN(input_size, hidden_size, num_layers=1, bias=True, batch_first=True, dropout=0, bidirectional=False)
Примеры использования
Пример 1: Базовое использование
Пример
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("Вход:", x.shape)
print("Выход:", 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("Вход:", x.shape)
print("Выход:", output.shape)
print("Hidden:", hidden.shape)
Пример 2: многослойная RNN
Пример
import torch
import torch.nn as nn
# 3-слойная RNN с 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("Вход:", x.shape)
print("Вывод:", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
import torch.nn as nn
# 3-слойная RNN с 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("Вход:", x.shape)
print("Вывод:", out.shape)
print("Hidden:", h.shape) # (3, 2, 256)
Пример 3: нелинейная активация
Пример
import torch
import torch.nn as nn
# tanh используется как функция активации по умолчанию
nn. = RNNbatch_first(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Форма выхода:", out.shape)
print("RNN использует tanh активацию по умолчанию")
import torch.nn as nn
# tanh используется как функция активации по умолчанию
nn. = RNNbatch_first(64, 64, batch_first=True)
x = torch.randn(1, 5, 64)
out, _ = rnn(x)
print("Форма выхода:", out.shape)
print("RNN использует tanh активацию по умолчанию")
Примечания
У базовой RNN есть проблема исчезающего градиента; для длинных последовательностей рекомендуется LSTM или GRU.
Сценарии использования
- Простые задачи на последовательностях: короткие последовательности
- Учебные примеры: понимание принципов RNN
- Быстрое прототипирование: простая базовая модель
Другие расширения