РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
354 of 769 menu

Класс RNN

Класс RNN применяется для создания рекуррентной нейронной сети. Первым параметром передаётся размер входных признаков input_size, вторым - размер скрытого состояния hidden_size. Третьим параметром можно задать количество слоёв num_layers (по умолчанию 1). Четвёртым параметром передаётся функция активации nonlinearity (по умолчанию 'tanh', можно выбрать 'relu'). Пятым параметром задаётся направление сети bidirectional (по умолчанию False). Шестым параметром передаётся коэффициент dropout (по умолчанию 0.0).

Синтаксис

torch.nn.RNN(input_size, hidden_size, num_layers, nonlinearity, bias, batch_first, dropout, bidirectional)

Пример

Давайте создадим простую однослойную RNN с функцией активации tanh:

import torch layer = torch.nn.RNN(input_size=3, hidden_size=5) print(layer)

Результат выполнения кода:

RNN(3, 5)

Пример

Давайте создадим двухслойную RNN с функцией активации ReLU:

import torch layer = torch.nn.RNN( input_size=10, hidden_size=20, num_layers=2, nonlinearity='relu', batch_first=True ) print(layer)

Результат выполнения кода:

RNN(10, 20, num_layers=2, batch_first=True)

Пример

Давайте создадим двунаправленную RNN с dropout:

import torch layer = torch.nn.RNN( input_size=5, hidden_size=10, num_layers=3, dropout=0.2, bidirectional=True ) print(layer)

Результат выполнения кода:

RNN(5, 10, num_layers=3, dropout=0.2, bidirectional=True)

Пример

Давайте применим RNN к входным данным с размерностью (длина последовательности, размер батча, размер признаков):

import torch torch.manual_seed(0) layer = torch.nn.RNN(input_size=4, hidden_size=6) input_t = torch.randn(5, 3, 4) output, hidden = layer(input_t) print(output.shape) print(hidden.shape)

Результат выполнения кода:

torch.Size([5, 3, 6]) torch.Size([1, 3, 6])

Пример

Давайте передадим начальное скрытое состояние в RNN:

import torch torch.manual_seed(0) layer = torch.nn.RNN(input_size=4, hidden_size=6) input_t = torch.randn(5, 3, 4) h0 = torch.randn(1, 3, 6) output, hidden = layer(input_t, h0) print(output.shape) print(hidden.shape)

Результат выполнения кода:

torch.Size([5, 3, 6]) torch.Size([1, 3, 6])

Пример

Давайте используем RNN с параметром batch_first=True, где размерность входных данных (батч, длина последовательности, признаки):

import torch torch.manual_seed(0) layer = torch.nn.RNN( input_size=4, hidden_size=6, batch_first=True ) input_t = torch.randn(3, 5, 4) output, hidden = layer(input_t) print(output.shape) print(hidden.shape)

Результат выполнения кода:

torch.Size([3, 5, 6]) torch.Size([1, 3, 6])

Смотрите также

  • класс LSTM,
    который реализует долгую краткосрочную память
  • класс GRU,
    который реализует управляемый рекуррентный блок
  • класс RNNCell,
    который реализует один шаг рекуррентной ячейки
  • класс Linear,
    который реализует полносвязный слой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить