Модель мульти-вывода Keras lstm предсказывает две особенности (временной ряд) - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно спросить, как использовать Keras прогнозировать из Keras функциональных API.Мне нужно написать многовариантную модель LSTM с множественным выходом.Я написал такую ​​модель:

inp = Input((train_X.shape[1],train_X.shape[2]))
x = LSTM(192,return_sequences=True)(inp)
x = Dropout(0.5)(x)
x = Flatten()(x)
out1 = Dense(1,activation='softsign')(x)
out2 = Dense(1,activation='softsign')(x)
model = Model(inputs =inp,outputs= (out1,out2))
model.compile(optimizer='rmsprop',
          loss='binary_crossentropy',
          metrics=['accuracy'])

history = model.fit(train_X,[y1,y2])
ypred = model.predict([pred_X,pred_Y])

То, что я хочу (ожидаю), это ypred, возвращающий два временных ряда, но это дает мне ошибку:

ValueError: Error when checking model : the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 1 array(s), but instead got the following list of 2 arrays: 

Он ожидает один массив как предикатаргумент, но только с одним массивом он вернет один прогнозируемый временной ряд.

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

Мои данные имеют 6 столбцов, первые два япытаясь предсказать, другие функции.Размеры моих данных:

train_X.shape= (24576, 192, 6)
pred_X.shape= (672, 192, 6)
pred_Y.shape= (672, 192, 6)
y1.shape = (24576,1)
y2.shape = (24576,1)

1 Ответ

0 голосов
/ 25 мая 2018

Вы путаете количество входов с количеством выходов.Давайте посмотрим на эту строку:

ypred = model.predict(pred_X)
# equally
out1, out2 = model.predict(pred_X)

теперь ypred будет списком выходных данных, а именно 2. Таким образом, предикат вернет оба выходных сигнала для одного и того же ввода, потому что именно так вы определили свою модель, 1 вход -> 2 выхода.Это то, что ошибка предупреждает.Чтобы исправить это, вам нужно дать предикат 1 вход и получить список выходов.

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