На данный момент я застрял в своей модели.
У меня есть данные временного ряда, которые выглядят следующим образом:
Дата var1 var2 var3 var4 var5 var6 2015-01-02 0,008345 0,161392 0,128982 0,832584 0,006930 79,530273 05.01.2015 0,008374 0,161392 0,128949 0,841107 0,007020 90,269531 ... 08.01.2021 0,008390 0,161199 0,128967 0,850629 0,007100 55,429688 Я хочу использовать последние 3 временных шага всех переменных, чтобы спрогнозировать следующие 2 временных шага var6. Все идет нормально. Я создал свои данные так, что они выглядят следующим образом:
var1(t-3) var2(t-3) var3(t-3) .... var6(t+1) 3 0,505040 0,974723 0,956856 0,120007 0,267241 0,153212 0,513697 0,974723 0,936600 0,154792 0,297082 0,141920 0,528732 0. 971972 0,961168 0,155416 0,313660 0,120967 0,116883 0,150163 4 0,513697 0,974723 0,936600 0,154792 0,297082 0,141920 0,528732 0,971972 0,961168 0,155416 0,313660 0,120967 0,528856 0. 973194 0,953739 0,179536 0,323607 0,116883 0,150163 0,150764 5 0,528732 0,971972 0,961168 0,155416 0,313660 0,120967 0,528856 0,973194 0,953739 0,179536 0,323607 0,116883 0,518223 0. 967189 0,947523 0,193654 0,323607 0,150163 0,150764 0,145170 # разделение на ввод и вывод п_выход = 2 п_в = 3 поезд_X, поезд_y = значения_поезд[:, :-n_out], значения_поезд[:, -n_out:] test_X, test_y = значения_теста[:, :-n_out], значения_теста[:, -n_out:] # изменить форму ввода в 3D [образцы, временные шаги, num_features] train_X = train_X.reshape((train_X.shape[0], n_in, 6)) test_X = test_X.reshape((test_X.shape[0], n_in, 6)) print(train_X.shape, train_y.shape, test_X.shape, test_y.shape) # количество выборок, количество временных шагов, количество функций (1825, 3, 6) (1825, 2) (412, 3, 6) (412, 2) Это также работает для обучения следующей модели
модель = Последовательная() model.add(LSTM(50, input_shape=(train_X.shape[1], train_X.shape[2]))) model.add(Плотный(2)) Однако прогнозирование выборок из моего тестового набора дает результаты, которые указывают на то, что в обучении что-то пошло не так: две линии — это две разные выборки, которые были предсказаны. Я не понимаю, почему графики синхронны. Учитывая данные, они должны работать друг за другом, поскольку две прогнозируемые выборки просто сдвинуты на один временной шаг. Что-то не так с моей архитектурой? мне это кажется систематической ошибкой, поскольку это выглядит одинаково для всех образцов в тестовом наборе.
Примечание. Здесь длина равна 7, потому что здесь я пытался предсказать следующие семь временных шагов, но не имеет значения, насколько длинной будет выходная последовательность, результат останется тем же.
