Ошибка формы для плотного слоя Vanilla RNN в Керасе? - PullRequest
2 голосов
/ 06 февраля 2020

Я пытаюсь выполнить прогнозирование временных рядов с использованием Vanilla RNN (без LSTM).

Ошибка при проверке цели: ожидается, что плотность_2 имеет форму (2,), но получен массив с формой (1, )

Я узнал прогнозирование времени LSTM по ссылке здесь . Я попробовал и проверил это, используя мой собственный набор данных. Теперь я хочу реализовать временные ряды с использованием RNN, чтобы научиться самому (а также сравнить разницу между LSTM и Vanilaa RNN). Но я сталкиваюсь с вышеуказанной ошибкой.

Проведя исследование в Интернете, я понял, что проблема заключается в выборе правильной функции ошибки (я полагаю). Но я не уверен. Ниже приведен мой фрагмент кода.

Обратите внимание, что, поскольку это прогнозирование временных рядов, Y (t) = X (T-1)

#X_train.shape = (7141, 1)
#y_train.shape = (7141, 1)
model = Sequential()
model.add(Dense(5, activation='relu'))
model.add(Dense(2))
model.compile(loss='mean_absolute_error', optimizer = 'adam')
history = model.fit(X_train, y_train, epochs=10, batch_size=64, verbose=1, shuffle=False)

1 Ответ

1 голос
/ 06 февраля 2020

Проблема в том, что ваш вывод имеет - как и состояния ошибки - форму (2,), потому что он создается слоем Dense(2). Если вы замените его на Dense(1), формы будут совпадать.

Однако обратите внимание, что пока нет ничего повторяющегося, и вы просто моделируете y(t_i) как функцию x(t_i), то есть один предыдущий образец.

...