У меня есть проблема, связанная с изменением формы входных / выходных данных для LSTM.Хотя есть много постов, посвященных этим вопросам, я не смог найти правильное решение для этого.Приношу свои извинения, если ошибка совершенно очевидна - я новичок в области глубокого обучения.
Моя проблема заключается в следующем: я выполнил симуляцию, которая привела к нескольким последовательностям зависящих от времени данных, которые я хотел бы передать в LSTM-сеть.Данные (очень упрощенные) выглядят следующим образом:
X=[[[8, 0, 18, 10]
[9, 0, 20, 7]
[7, 0, 17, 12]]
[[7, 0, 31, 8]
[5, 0, 22, 9]
[7, 0, 17, 12]]]
То есть у меня есть две последовательности с тремя временными шагами в каждой и 4 характеристиками за временной шаг.Следовательно, форма X (2,3,4).Соответственно, то, что я хотел бы предсказать, выглядит следующим образом
y=[[[10]
[7]
[12]]
[[8]
[9]
[12]]]
и имеет форму (2,3,1).То есть точка данных [8,0,18,10] должна прогнозировать [10], за которой следует точка [9,0,20,7], которая должна прогнозировать 7 и так далее.Моя модель выглядит следующим образом:
model.add(LSTM(input_shape=(X.shape[1], X.shape[2]), return_sequences=True))
model.add(Dense(50, activation='tanh'))
model.add(Dense(1, activation='tanh'))
Хотя это работает без ошибок, мой результат довольно плохой.Скорее всего, я думаю, что это связано с корректным изменением выходного вектора.Кроме того, я не совсем уверен, должен ли return_sequence быть истинным или нет.Если установлено значение False, я получаю сообщение об ошибке «Ожидается, что плотность_2 имеет 2 измерения, но получен массив с формой (2,3,1)».Не совсем уверен в этом.Я также изучал моделирование Seq2Seq, так как я пытаюсь предсказать последовательность, основанную на последовательности, но я не смог найти обходной путь.Кто-нибудь может помочь?