Я пытаюсь построить модель, которая является в основном последовательностью к модели последовательности, но у меня есть специальный кодер, а именно «Вторичный энкодер».
Временные шаги во вторичном энкодере = 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, так что я думаю, что итеративный способ значительно замедлит процесс, верно?