У меня есть следующая проблема:
Я хочу предсказать 5 последовательностей по 30 дней для двумерного ввода (X_test), как показано ниже.
### This is X_test ###
array([[[0.9889562 , 0.35528348],
[0.98835297, 0.36100796],
[0.98943452, 0.39090311],
[0.97700769, 0.37543382],
[0.96866762, 0.34993568]],
[[0.98835297, 0.36100796],
[0.98943452, 0.39090311],
[0.97700769, 0.37543382],
[0.96866762, 0.34993568],
[0.9680748 , 0.3501392 ]],
[[0.98943452, 0.39090311],
[0.97700769, 0.37543382],
[0.96866762, 0.34993568],
[0.9680748 , 0.3501392 ],
[0.96594827, 0.37902433]],
...,
shape(150,5,2)
Мой код модели LSTM выглядит следующим образом (2 входных функции с 5 временными шагами, 1 выходной):
model = Sequential()
model.add(LSTM(100,activation = "relu", return_sequences = True,input_shape = (5,2)))
model.add(Dropout(0.1))
model.add(LSTM(100,activation = "relu", return_sequences = False))
model.add(Dropout(0.1))
model.add(Dense(1))
model.compile(optimizer="adam", loss="mse")
До сих пор у меня был только одномерный ввод, и я использовал следующий код для прогнозирования 30-дневной последовательности, который работал совершенно нормально:
import numpy
def pred_multi(test_data, start_sequence_day, sequence_length):
predictedsequence = []
test_data1 = test_data[start_sequence_day] #Used X_test as test_data
for i in range(sequence_length):
test_data1 = test_data1.reshape(1,5,2)
prediction = model.predict(test_data1)
predictedsequence.append(prediction)
test_data1 = numpy.insert(test_data1, len(test_data1[0]), prediction)
test_data1 = numpy.delete(test_data1, 0, axis = 0)
return predictedsequence
Однако, поскольку у меня теперь есть другая функция ввода, этот код не работает должным образом, так как я получаю только один вывод. Тем не менее, мне нужно два входа для следующего временного шага в качестве входа.
Кто-нибудь может помочь? Я попробовал все, но я не уверен, как решить эту проблему.
Большое спасибо!