Я получаю сообщение об ошибке при настройке модели при выполнении многоэтапного прогнозирования для многомерной модели LSTM - PullRequest
0 голосов
/ 20 июня 2020

Я использую многомерную модель LSTM для прогнозирования многоступенчатого вывода. Мои данные имеют 7 функций, включая переменную, которую я хочу предсказать, которая является электрической нагрузкой. У меня есть данные примерно за 2 года с 96 значениями (каждые 15 минут) в день. Я использую только 1 временной шаг (скользящего окна). Набор для проверки состоит из 9600 значений. Я пытаюсь спрогнозировать нагрузку на следующий день (т.е. 96 значений). Итак, я взял 96 в плотном слое. Я правильно ввел трехмерный ввод как [образцы, временные шаги, функции]. Здесь я дал функции значение 7. Ниже представлена ​​схема моей сети:

model = Sequential()
model.add(LSTM(100, return_sequences=False, activation='relu', input_shape=(train_X.shape[1],train_X.shape[2]))
model.add(Dense(96))
model.compile(loss='mae', optimizer='adam')

Но когда я бегу ниже линии соответствия модели.

history = model.fit(train_X, train_y, epochs=10, batch_size=96, validation_data=(test_X, test_y), verbose=2, shuffle=False)

Я получаю ошибку ниже.

Error when checking target: expected dense_1 to have shape (96,) but got array with shape (1,)

I не понимаю, почему он дает такую ​​ошибку. Пожалуйста, помогите мне решить эту ошибку. Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация. Я также хочу спросить, правильно ли я даю ввод для предсказания. См. Ниже: Это входной файл для получения прогнозов. Это последнее значение в моем наборе данных. Я даю это в качестве входных данных и прогнозирую 96 значений перед этим значением.

print(Utestx_X.shape)
(1, 1, 7)

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

yhat = model.predict(Utestx_X)
Utestx_X = Utestx_X.reshape((Utestx_X.shape[0], Utestx_X.shape[2]))
...