В настоящее время я работаю над нейронной сетью на основе стекированных LSTM.
Структура сети такая:
Входные данные : особенности временных рядов: компонент тренда временного ряда / сезонности временного ряда (полученный с помощью алгоритма Холтса Винтера)
Модель : [4 stacked 100 neurons LSTMs]
Вывод : прогноз
Сеть действительно не может выучить второй шаблон и предсказать, что происходит.

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

Итак, мой вопрос: как я могу улучшить производительность моей модели в первом случае?
Я уже обучал его во многих эпохах, и обучение в большем количестве эпох не повлияет на результат.
Вот как я определил свою модель:
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)))