Keras Looping LSTM слои - PullRequest
       58

Keras Looping LSTM слои

2 голосов
/ 03 ноября 2019

Я пытаюсь построить модель, которая является в основном последовательностью к модели последовательности, но у меня есть специальный кодер, а именно «Вторичный энкодер».

Временные шаги во вторичном энкодере = 300

этот кодер имеетспециальное свойство, по сути это GRU, но на каждом временном шаге необходимо изменить скрытое состояние, созданное GRUCell, его необходимо добавить с другой переменной, а затем эта комбинация (новое скрытое состояние) передается вследующий GRUCell, который использует это в качестве initial_state ........ эта вещь повторяется 300 раз.

Поскольку требуется 300 GRUCell (по одному на каждый временной шаг), не представляется возможным жестко закодировать каждый из300 слоев и создайте модель. Итак, мне нужна помощь, чтобы выяснить, как написать цикл для реализации этой вещи в keras или, возможно, как создать пользовательский слой (если это лучший выбор).

то, что я думал (псевдокод): -

здесь альфа - это переменная, о которой я говорил, которую я хочу добавить

x = Input(shape=...)
encoder_cell = GRU(10,return_state=True)
init_state = xxxx     //some value to give as initialiser to first GRU cell
for t in range(300):
    _,hstate = encoder_cell(x[t],initial_state = init_state)
    init_state = hstate + alpha

model = Model(inputs = x, outputs = init_state)

сработает ли это? Сможет ли модель интерпретировать, что ей нужно 300 циклов на каждом тренировочном примере?

Модель довольно большая, имеет пропускаемые соединения и много других вещей, поэтому мне нужна ваша помощь, чтобы понятьИз этого подмножества моей проблемы, прежде чем я реализую остальные, и, пожалуйста, игнорируйте синтаксис, это просто псевдокод.

Кроме того, мне нужно снова вызвать эту модель n, так что я думаю, что итеративный способ значительно замедлит процесс, верно?

...