Конкатенация прогнозных значений LSTM Keras - PullRequest
0 голосов
/ 20 февраля 2019

Я не знаю, ошибаюсь ли я или имеет смысл, но моя идея состоит в том, чтобы использовать один прогноз и на его основе прогнозировать будущие значения (я использую модель LSTM на Keras).Я пытаюсь сделать следующее:

1) Получить первые X известных значений (initial_values)

2) Прогнозировать с использованием initial_values ​​и получить (initial_prediction).

3) Удалите первый элемент initial_values ​​и добавьте initial_prediction

4) Повторите с шага 2) X раз.

Мой код выглядит следующим образом:

predictions = []
y_test_concat = []
num_steps_before = 30

# Step 1

# X_test_scaled_shape: (192, 1)
y_test_concat.append(X_test_scaled[:num_steps_before,:]) 
y_test_concat = np.array(y_test_concat)
y_test_concat.reshape(y_test_concat.shape[0],y_test_concat.shape[1],1)

# Step 2

simulated_predictions.append(model.predict(y_test_concat))

# Step 3 (where I get stucked)

num_steps_to_predict = 10
for i in range(1,num_steps_to_predict):
  ...

Итак, во времяНа следующих итерациях массив должен выглядеть так:

[initial_value2,initial_value3,...initial_value30, initial_prediction]
[initial_value3,initial_value4,...initial_prediction, initial_prediction2]
...
[initial_value20,initial_value21,...initial_predictionX, initial_predictionY]

Есть идеи?Мне было интересно, есть ли что-то, что уже реализовано в Keras, чтобы сделать это с помощью LSTM.

1 Ответ

0 голосов
/ 21 февраля 2019

Спасибо @lukedeluccia за ответ, я нашел решение:

num_steps_before = 30
initial_values = np.array([X_test_scaled[:num_steps_before,:]])
predictions = initial_values

for i in range(0,num_steps_before):
  prediction = model.predict(predictions)
  predictions = np.append(predictions,[prediction])
  predictions = np.delete(predictions,0)
  predictions = predictions.reshape((1,predictions.shape[0],1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...