栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Keras RNN模型预测未来的日期或事件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Keras RNN模型预测未来的日期或事件?

好吧,您需要一个

stateful=True
模型,因此您可以将其一个接一个地提供给另一个预测,以获取下一个预测,并使模型始终认为每个输入不是新序列,而是前一个序列的后继。

修改代码和培训

我在代码中看到,有人试图让自己

y
成为一个转变
x
(预测下一步的好选择)。但是这里的预处理也存在一个大问题:

training_set = df_train.valuestraining_set = min_max_scaler.fit_transform(training_set)x_train = training_set[0:len(training_set)-1]y_train = training_set[1:len(training_set)]x_train = np.reshape(x_train, (len(x_train), 1, 1))

LSTM
图层数据的形状必须为
(number_of_sequences, number_of_steps,features)

因此,您显然只创建了1个步骤的序列,这意味着LSTM根本不学习序列。(没有一个步骤只有一个步骤)。

假设您的数据是具有1个功能的单个唯一序列,则其数据的形状肯定应为

(1, len(x_train), 1)

自然,

y_train
也应该具有相同的形状。

反过来,这将要求您的LSTM层是

return_sequences=True
-逐步
y
增加长度的唯一方法。另外,为了获得良好的预测,您可能需要一个更复杂的模型(因为现在这将是真正的学习)。

完成后,您将训练模型,直到获得满意的结果。


预测未来

为了预测未来,您将需要

stateful=True
LSTM层。

首先,您需要重置模型的状态:

model.reset_states()
-每次将新序列输入到有状态模型中时都必须这样做。

然后,首先预测整个过程

X_train
(模型需要用它来理解它在序列的哪一点,用技术术语来说:创建状态)。

predictions = model.predict(`X_train`) #this creates states

最后,您创建一个循环,从先前预测的最后一步开始:

future = []currentStep = predictions[:,-1:,:] #last step from the previous predictionfor i in range(future_pred_count):    currentStep = model.predict(currentStep) #get the next step    future.append(currentStep) #store the future steps#after processing a sequence, reset the states for safetymodel.reset_states()

该代码使用2个特征的序列,移动的将来步长预测以及与此答案稍有不同但基于相同原理的方法来执行此操作。

我创建了两个模型(一个

stateful=False
用于训练而无需每次都需要重置状态-永远不要忘记在开始新序列时重置状态-
另一个
stateful=True
用于从训练后的模型中复制权重以预测未来)

https://github.com/danmoller/TestRepo/blob/master/TestBookLSTM.ipynb



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号