Создание прогнозов с использованием моделей LSTM кодера-декодера с участием слоев CNN - PullRequest
0 голосов
/ 12 апреля 2020

Я хотел поэкспериментировать со следующей моделью кодера-декодера. В рамках эксперимента я начал с введения нескольких слоев CNN, а затем включил слои LSTM. Я могу обучить модель, но я не уверен, как сделать прогноз / вывод на тестовом наборе. Я думаю, что model.predict не будет работать в этом случае. Я видел примеры ( здесь ) прогнозирования модели, когда задействованы только два слоя LSTM. Тем не менее, я не уверен, как сделать то же самое, когда слои CNN включены поверх этих двух слоев LSTM.

    input_data = Input(name='the_input', shape = (390,13), dtype='float32')
    inp = BatchNormalization(name="inp")(input_data)
    conv1= Conv1D(filters=32, kernel_size = 3, strides=2, padding='causal',activation='relu')(inp)
    conv1 = BatchNormalization(name="conv1")(conv1)
    conv2= Conv1D(filters=64, kernel_size = 3, padding='causal',activation='relu')(conv1)
    conv2 = BatchNormalization(name="conv2")(conv2)
    conv3= Conv1D(filters=128, kernel_size = 3, strides=2,padding='causal',activation='relu')(conv2)
    conv3 = BatchNormalization(name="conv3")(conv3)

    encoder=LSTM(128, return_sequences = True, go_backwards = True, return_state=True, name = "encoder_LSTM")
    encoder_outputs, state_h, state_c = encoder(conv3)
    encoder_states = [state_h, state_c]

    input_decoder = Input(shape=(None,output_vocab_size))
    decoder_lstm = LSTM(128, return_sequences=True, return_state=True, name = "decoder_LSTM")
    decoder_outputs, _, _ = decoder_lstm(input_decoder, initial_state=encoder_states)

output_decoder = Dense(output_vocab_size, activation='softmax')
output=output_decoder(decoder_outputs)


model = Model([input_data,input_decoder], output)
...