Как векторизовать LSTM?

В частности, я не понимаю, что значит для слоя LSTM иметь (скажем) 50 ячеек. Рассмотрим следующий блок LSTM из этой замечательной записи в блоге:

Модель LSTM из http://colah.github.io/posts/2015-08-Understanding-LSTMs/

Скажем, мой ввод xt является вектором (20,), а скрытый слой ht является вектором (50,). Учитывая, что состояние ячейки Ct подвергается только точечным операциям (точечным tanh и *), прежде чем стать новым скрытым состоянием, я понимаю, что Ct.shape = ht.shape = (50,). Теперь ворота забывания просматривают входные данные, объединенные со скрытым слоем, который будет вектором (20+50,) = (70,), что означает, что ворота забывания должны иметь матрицу весов формы (50, 70), так что dot(W, [xt, ht]).shape = (50,).

Итак, мой вопрос на данный момент заключается в том, смотрю ли я на блок LSTM с 50 ячейками, когда Ct.shape = (50,)? Или я неправильно понимаю, что значит для слоя LSTM иметь 50 ячеек?


person Nasim Rahaman    schedule 23.10.2015    source источник


Ответы (1)


Я понимаю, с чем вы путаетесь. Таким образом, черная линия, соединяющая два прямоугольника вверху, представляющая состояние ячейки, на самом деле представляет собой набор из 50 очень маленьких линий, сгруппированных вместе. Они умножаются поточечно с выходом вентиля забывания, который имеет выход, состоящий из 50 значений. Эти 50 значений умножаются на состояние ячейки по точкам.

person London guy    schedule 26.10.2015