Это невозможно или возможно прогнозировать временные ряды для следующего значения, используя LSTM в Керасе? - PullRequest
1 голос
/ 01 июня 2019

У меня есть x_train 62796 и x_test 15684, и я хочу предсказать значения после этого.Я прошу вашего совета, чтобы спрогнозировать значения после этого, используя LSTM в Керасе.Вот мой код:

...
look_back = 20
train_size = int(len(data) * 0.80)
test_size = len(data) - train_size

train = data[0:train_size]
test = data[train_size:len(data)]
x_train, y_train = create_dataset(train, look_back)
x_test, y_test = create_dataset(test, look_back)

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
y_train=np.repeat(y_train.reshape(-1,1), 20, axis=1).reshape(-1,20,1)
y_test=np.repeat(y_test.reshape(-1,1), 20, axis=1).reshape(-1,20,1)
...
model = Sequential()

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(512,  return_sequences=True))
model.add(Dropout(0.3))

model.add(LSTM(1, return_sequences=True))

model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])
model.summary()
model.fit(x_train, y_train, epochs=10, batch_size=64)
p = model.predict(x_test)

Итак, predictions = model.predict(x_train) и форма (62796, 20, 1)

Я пытался этот код

future = []
currentStep = predictions[-20:, :, :] # -20 is last look_back number

for i in range(10):
    currentStep = model.predict(currentStep)
    future.append(currentStep)

В этом коде будущий результат:

1

, но p = model.predict(x_test) '[: 4000] результат:

2

Я хочу знать, как предсказать точное следующее значение.Но разница между этими двумя результатами очень велика.Я не знаю, где это пошло не так или код неисправен.Вот полный источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...