Как предсказать последовательность в Керасе с многомерным вводом? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть следующая проблема: Я хочу предсказать 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

Однако, поскольку у меня теперь есть другая функция ввода, этот код не работает должным образом, так как я получаю только один вывод. Тем не менее, мне нужно два входа для следующего временного шага в качестве входа.

Кто-нибудь может помочь? Я попробовал все, но я не уверен, как решить эту проблему.

Большое спасибо!

...