Как использовать мой вывод LSTM в качестве входных данных для другого LSTM в кератах? - PullRequest
0 голосов
/ 02 марта 2019

В предложении я хочу предсказать пять различных двоичных значений.Для каждого двоичного значения я хочу предсказать однозначное закодированное значение.

Для этого я запрограммировал 2 разных LSTM.Но теперь я не уверен, как я мог использовать выходные данные первого LSTM, чтобы правильно использовать его во втором LSTM.Итак, во-первых, две мои модели:

Первая модель

model = Sequential()
model.add(Embedding(word_count, embedding_size, input_length = sentence_length))
model.add(LSTM(hidden_layer_units))
model.add(Dense(5))
model.add(Activation("sigmoid"))

Выход может быть 0 или 1 для 5 значений.Fe [0,1,0,0,1]

Вторая модель

main_input = Input(shape = (sentence_length,), dtype = 'int32', name = 'main_input')
embedding = Embedding(word_count, embedding_size,
                    input_length=sentence_length)(main_input)
lstm_out = LSTM(hidden_layer_units)(embedding)

auxiliary_input = Input(shape=(5,), name='aux_input')
x = concatenate([lstm_out, auxiliary_input])
main_output = Dense(4, activation='sigmoid', name='main_output')(x)

model = Model(inputs=[main_input, auxiliary_input], outputs=main_output)

Входные данные моего вспомогательного входа такие же, как [0,0,0,1,0].Вывод имеет горячее кодирование [0,0,1,0]

Моя идея

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

[
 [0,0,0,1]
 [0,0,1,0]
 [0,0,0,1]
 [0,0,0,1]
 [1,0,0,0]
]

Так что мой вопрос:

  1. Можно ли использовать данные первой модели непосредственно в качестве входных данных для второй модели, имея двумерный выходной слой?

    или 2.возможно следующее: для каждого двоичного значения моей первой модели я передаю закодированный массив с одним горячим вводом в качестве входных данных для второй модели.Так что вторая модель существует 5 раз.Только если все 5-секундные модели прогнозируют выходной сигнал правильно, моя полная модель верна.

1 Ответ

0 голосов
/ 03 марта 2019

Я изменил свой выходной слой и оценил этот измененный слой.Так что мои последние два слоя выглядят так:

main_output = Dense(20,activation='sigmoid')(concatenated_layer)
reshaped_out = Reshape(target_shape=(5,4))(main_output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...