Как я могу получить прогнозируемое будущее значение после использования Tensorflow LSTM? - PullRequest
3 голосов
/ 17 февраля 2020

Спасибо за чтение. Я плохо разбираюсь в английском sh.

Мне интересно, как прогнозировать и получать данные будущих временных рядов после обучения модели. Я хотел бы получить значения после N шагов.

Итак, я использовал временные ряды в руководстве Tensorflow, чтобы попрактиковаться в прогнозировании модели.

a = y_val[-look_back:] 
for i in range(N-step prediction): #predict a new value n times.
    tmp = model.predict(a.reshape(-1, look_back, num_feature)) #predicted value     
    a = a[1:] #remove first     
    a = np.append(a, tmp) #insert predicted value

Результат предсказал значение из - От 0,0000035 до -0,000005 очень по-разному - от -1,8 до -0,4 от действительного значения y. Как показано ниже.

1

Как получить реальное, правильное решение? или Тессорфлоу невозможно предсказать несколько шагов?

полный источник (после 25-й строки мой код.)

1 Ответ

0 голосов
/ 11 марта 2020

Если считаете, что в коде есть небольшая ошибка.

Строка кода

a = y_val[-look_back:]

должна быть заменена на

look_back = 20
x = x_val_uni
a = x[-look_back:]
a.shape

Другими словами, мы должны отправить значения X в качестве входных данных для модели для прогнозирования. , а не Y Значения, потому что LSTM ожидает, что его Input будет 3D tensor with shape [batch, timesteps, feature].

Пожалуйста, Для получения дополнительной информации об этом см. Ссылку .

Однако мы можем сравнить его прогнозы со значениями Y, с кодом,

y = y_val_uni[-20:]

plt.plot(y)
plt.plot(tmp)
plt.show()

Что приведет к приведенному ниже графику:

enter image description here

Полный рабочий код приведен в этом Google Colab Gist .

...