Как я могу использовать LSTMCell и RNN в керасе, чтобы вручную развернуть слой LSTM? - PullRequest
0 голосов
/ 30 января 2020

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

Так что я хочу l oop и вручную развернуть слой LSTM для обучения и не могу использовать функциональность LSTM, легко доступную в Keras.

# The code should look something like this:

input_layer = Input(shape = (time_steps, embedding_size))
cell = LSTMCell(units = hidden_units)
recurrent_layer = RNN(cell, return_states = True, return_sequences = True)

states = [tf.zeros(hidden_units, dtype = tf.float32)]*2

for time_step in time_steps:
    cell_outputs = recurrent_layer(input = input_layer[:, time_step, :], states = states)
    cell_output, states = cell_outputs[0], cell_outputs[1:]

    # check cell_output, make changes
    cell_output = tamper_celloutput(cell_output)
    final_output = TimeDistributed(Dense(1))(cell_output)

myModel = Model(input_layer, final_output)

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

Я не могу опубликовать весь свой код. Любая помощь, изменения и предложения будут оценены. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...