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

В настоящее время я работаю над нейронной сетью на основе стекированных LSTM.

Структура сети такая:

Входные данные : особенности временных рядов: компонент тренда временного ряда / сезонности временного ряда (полученный с помощью алгоритма Холтса Винтера)

Модель : [4 stacked 100 neurons LSTMs]

Вывод : прогноз

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

enter image description here

Это раздражает, потому что похоже, что я не могу использовать большой тренировочный набор с большими выборками (400 временных шагов на выборку) для прогнозирования 168 временных шагов.

Я пытался использовать меньший набор данных с выборками меньшего размера в моем тренировочном наборе (только 100 временных шагов на выборки), чтобы предсказать 48 временных шагов, и результат намного лучше.

enter image description here

Итак, мой вопрос: как я могу улучшить производительность моей модели в первом случае?

Я уже обучал его во многих эпохах, и обучение в большем количестве эпох не повлияет на результат.

Вот как я определил свою модель:

model = Sequential()  
model.add(LSTM(units=100, input_shape=(fen_pred, X_train.shape[2])))  
model.add(Dropout(0.2))  
model.add(RepeatVector(n_output))
model.add(LSTM(units=100, return_sequences=True))  
model.add(Dropout(0.2))
model.add(LSTM(units=100, return_sequences=True))  
model.add(Dropout(0.2))
model.add(LSTM(units=100, return_sequences=True))  
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(1)))
...