Я некоторое время изучал LSTM. Я понимаю на высоком уровне, как все работает. Однако, собираясь реализовать их с помощью Tensorflow, я заметил, что BasicLSTMCell требует параметра количества единиц (то есть num_units
).
Из этого очень подробного объяснения LSTM я понял, что один блок LSTM является одним из следующих
который на самом деле является подразделением ГРУ.
Я предполагаю , что параметр num_units
из BasicLSTMCell
имеет в виду , сколько из них мы хотим подключить друг к другу в слое.
Это оставляет вопрос - что такое «клетка» в этом контексте? Является ли «ячейка» эквивалентом слоя в обычной нейронной сети с прямой связью?
Ответы:
num_units
Кроме того, из https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md :
«Уровень LSTM», вероятно, более явный, пример :
источник
num_unit
размерный горизонтальный массив взаимосвязанных ячеек LSTM. Имеет смысл. Так что же тогда будет аналогом скрытого слоя в стандартной сети прямой связи?Большинство диаграмм LSTM / RNN показывают только скрытые ячейки, но не единицы этих ячеек. Отсюда и путаница. Каждый скрытый слой имеет скрытые ячейки, столько же, сколько и количество временных шагов. Кроме того, каждая скрытая ячейка состоит из нескольких скрытых элементов, как показано на схеме ниже. Следовательно, размерность матрицы скрытого слоя в RNN равна (количество временных шагов, количество скрытых единиц).
источник
Хотя проблема почти такая же, как я ответил в этом ответе , я хотел бы проиллюстрировать эту проблему, которая также немного смутила меня сегодня в модели seq2seq (благодаря ответу @Franck Dernoncourt), на графике. В этой простой схеме кодера:
источник
num_units = n
в эту цифруНа мой взгляд, под ячейкой подразумевается такой узел, как скрытая ячейка, которая также называется скрытым узлом, для многоуровневой модели LSTM число ячеек может быть вычислено с помощью time_steps * num_layers, а num_units равно time_steps
источник
Этими единицами в Керасе является размерность выходного пространства, равная длине задержки (time_step), к которой повторяется сеть.
https://keras.io/layers/recurrent/
источник