Понимание единиц LSTM против клеток


32

Я некоторое время изучал LSTM. Я понимаю на высоком уровне, как все работает. Однако, собираясь реализовать их с помощью Tensorflow, я заметил, что BasicLSTMCell требует параметра количества единиц (то есть num_units).

Из этого очень подробного объяснения LSTM я понял, что один блок LSTM является одним из следующих

Блок LSTM

который на самом деле является подразделением ГРУ.

Я предполагаю , что параметр num_unitsиз BasicLSTMCellимеет в виду , сколько из них мы хотим подключить друг к другу в слое.

Это оставляет вопрос - что такое «клетка» в этом контексте? Является ли «ячейка» эквивалентом слоя в обычной нейронной сети с прямой связью?


Я все еще в замешательстве, я читал colah.github.io/posts/2015-08-Understanding-LSTMs и хорошо это понимаю. Как термин ячейка применяется в отношении этой статьи? Кажется, что ячейка LSTM в статье является вектором, как в Tensorflow, верно?
Буратино

Ответы:


17

num_unitsht

Кроме того, из https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md :

Определение ячейки в этом пакете отличается от определения, используемого в литературе. В литературе под ячейкой понимается объект с единственным скалярным выходом. Определение в этом пакете относится к горизонтальному массиву таких единиц.

«Уровень LSTM», вероятно, более явный, пример :

def lstm_layer(tparams, state_below, options, prefix='lstm', mask=None):
    nsteps = state_below.shape[0]
    if state_below.ndim == 3:
        n_samples = state_below.shape[1]
    else:
        n_samples = 1

    assert mask is not None
    […]

Ах, я вижу, тогда «ячейка» - это num_unitразмерный горизонтальный массив взаимосвязанных ячеек LSTM. Имеет смысл. Так что же тогда будет аналогом скрытого слоя в стандартной сети прямой связи?

* Государственные единицы LSTM

@rec Это правильно
Франк Дернонкур

1
@Sycorax, например, если вход нейронной сети является временной серией с 10 временными шагами, горизонтальное измерение имеет 10 элементов.
Франк Дернонкур

1
Я все еще в замешательстве, я читал colah.github.io/posts/2015-08-Understanding-LSTMs и хорошо это понимаю. Как термин ячейка применяется в отношении этой статьи? Кажется, что ячейка LSTM в статье является вектором, как в Tensorflow, верно?
Буратино

4

Большинство диаграмм LSTM / RNN показывают только скрытые ячейки, но не единицы этих ячеек. Отсюда и путаница. Каждый скрытый слой имеет скрытые ячейки, столько же, сколько и количество временных шагов. Кроме того, каждая скрытая ячейка состоит из нескольких скрытых элементов, как показано на схеме ниже. Следовательно, размерность матрицы скрытого слоя в RNN равна (количество временных шагов, количество скрытых единиц).

введите описание изображения здесь


4

Хотя проблема почти такая же, как я ответил в этом ответе , я хотел бы проиллюстрировать эту проблему, которая также немного смутила меня сегодня в модели seq2seq (благодаря ответу @Franck Dernoncourt), на графике. В этой простой схеме кодера:

введите описание изображения здесь

hя ).


Я верю num_units = nв эту цифру
notilas

-1

На мой взгляд, под ячейкой подразумевается такой узел, как скрытая ячейка, которая также называется скрытым узлом, для многоуровневой модели LSTM число ячеек может быть вычислено с помощью time_steps * num_layers, а num_units равно time_steps


-1

Этими единицами в Керасе является размерность выходного пространства, равная длине задержки (time_step), к которой повторяется сеть.

keras.layers.LSTM(units, activation='tanh', ....)

https://keras.io/layers/recurrent/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.