pytorch nn.LSTM () Параметр Описание

Формат ввода данных:
ВХОД (seq_len, ПАРТИЯ, input_size)
H0 (num_layers * num_directions, ПАРТИЯ, hidden_size)
сО (num_layers * num_directions, ПАРТИЯ, hidden_size)

输出数据格式:
выход (seq_len, пакетный, hidden_size * num_directions)
HN (num_layers * num_directions, пакетный, hidden_size)
сп (num_layers * num_directions, пакетный, hidden_size)

импорт горелка
импорт torch.nn в ппах
от torch.autograd импорта переменного

Строительство сети Модель # --- вход матрицы , причем количество input_size, в котором число выходной матрицы hidden_size, слои num_layers
Входы = torch.randn (5,3,10) -> (seq_len, то batch_size, input_size)
РНН = nn.LSTM (10 , 20,2) -> (input_size, hidden_size, num_layers)
Н0 = torch.randn (2,3,20) -> (* num_layers 1, то batch_size, hidden_size).
сО = torch.randn (2,3,20) - > (. * num_layers 1, то batch_size, hidden_size)
. num_directions = 1 является однонаправленным , так как LSTM
'' '
Выходы: Выход, (h_n, c_n)
' ''
выход, (HN, CN) = РНН (входы, (H0, CO) )
. 1
2
. 3
. 4
. 5
. 6
. 7
. 8
. 9
10
. 11
12
13
14
batch_first: первый выход ли входная размерность batch_size, значение по умолчанию равно false. Потому что факел, люди использовали для использования с в наборе данных факела, dataloader непрерывных входных данных для модели нейронной сети, есть есть параметр batch_size указует, сколько данных когда-то вошел. LSTM в модели, входные данные должны быть периодическими данные, для того, чтобы отличить объемную LSTM данных объемных данных и dataloader смысл такого же, модель LSTM будет отличаться от этого параметра. Если смысл тот же, что устанавливается Истина, если иное значение, устанавливается в значение False. torch.LSTM batch_size размерность во втором измерении по умолчанию настройка параметров может быть помещена batch_size первого измерения. Такие, как: вход по умолчанию (4,1,5), является середина batch_size 1, обозначена после того, как batch_first = True (1,4,5). Таким образом, если входные данные двумерные данные, то он должен быть batch_first в True;

входов = torch.randn (5,3,10): seq_len = 5, bitch_size = 3, input_size = 10
я оценил: Есть три предложения, каждое предложение пять слов, каждое слово представляется вектором 10 размеров; длина предложения не то же самое, так что seq_len короткие или длинные, могут быть решены , и это LSTM специальная о длине последовательности. Только seq_len этот параметр является переменной.
Подробная кп и сп по некоторым параметрам смотреть на это
в случае опыта противоречивой длиной текста, текст в исходных данных до функции модели работает та же партия будет приведена в соответствии с его длиной заполнением. Но когда однонаправленный выровнен LSTM данных даже двухсторонняя LSTM есть проблема, LSTM будет иметь дело с большим количеством бессмысленного отступа характера, так что модель будет иметь определенный уклон, на этот раз вам нужно использовать функцию torch.nn.utils.rnn .pack_padded_sequence () и torch.nn.utils.rnn.pad_packed_sequence ()
Для получения более подробной информации см объяснения здесь

BiLSTM
BILSTM двунаправленного LSTM; связывание вперед и назад LSTM LSTM в LSTM. Просмотреть пример следующим образом :


Структура LSTM выводится:


Более подробная формула вывод https://blog.csdn.net/songhk0209/article/details/71134698

GRU формула вывод :( карта выглядела немного напряженной, опирался на их собственной диаграмме потоков данных)


---------------------
Автор: солнечный бой скрещивание
Источник: CSDN
Оригинал: https: //blog.csdn.net/yangyang_yangqi/article/details/84585998
Уведомление об авторских правах Эта статья является блоггер оригинала статьи, воспроизведен, пожалуйста , приложите Боуэна ссылку!

рекомендация

отwww.cnblogs.com/jfdwd/p/11184846.html
рекомендация