Python 这对预测下一个keras值正确吗?

Python 这对预测下一个keras值正确吗?,python,keras,lstm,Python,Keras,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, lo

这是我的密码

...
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)
我想预测下一个值,所以,
predicts=model.predicts(x_火车)
形状是
(62796,20,1)

我对以下网站进行了编码

在这段代码中,未来的结果是

但是
p=model.predict(x_检验)
的[:4000]结果是

这两个结果之间的差异非常大

这是预测下一个值的正确方法吗

我不知道哪里出了问题或者代码出了问题

我希望得到你的意见


完整源代码是

您可以尝试多种方法。目前没有一条正确的道路。你可以训练一个单独的模型来预测t+1,t+2。。。t+n。一个LSTM模型预测t+1,而另一个模型预测t+n。这就是所谓的迪莫战略

您的策略(递归策略)尤其危险,因为模型可以在多个时间范围内传播错误

你可以在本文中找到一个很好的备选策略比较。

根据您的代码,您正试图使用lstm预测下一个值。 因此,这里您必须正确地重塑输入数据,以反映时间步长和特征

model.add(LSTM(512,  return_sequences=True))
您必须编写以下代码,而不是此代码:

model.add(LSTM(512, input_shape=(look_back,x)))
x=在训练数据中输入特征

我想本文将有助于调整您的代码并预测未来的价值:

本文将帮助您进一步了解如何预测未来价值:

多谢各位

model.add(LSTM(512, input_shape=(look_back,x)))