为什么Keras LSTM期望3个维度,而不是提供的样本、时间步长和特性?
luc_bartkowski
成员职位:46Maven
我想用LSTM对OHLC数据的时间序列进行分类。
该示例集被转换为样本、时间步长和特征,以使用重塑层馈送LSTM。
当我运行这个模型时,我得到如下图所示的错误消息。
我做错了什么?
我的模型如下所示。
我的输入示例集由2000个OHLC数据示例组成。
我将该数据重构为20个时间步长为4个(OHLC)特征的100个样本。
我的标签是PhasesNum。它包含3个类,用实数10、100和1000表示。
< ?xml version="1.0" encoding="UTF-8"?> <过程version = " 8.1.001”>
> <上下文
<输入/ >
<输出/ >
<宏/ >
> < /上下文
<过程扩展= " true " >
< /操作符>
< /操作符>
< /操作符>
<列出关键= " set_additional_roles " >
< / >列表
< /操作符>
< /操作符>
< /操作符>
<参数键="学习率"值="0.001"/>
<枚举关键= "规" / >
<枚举关键= "回调函数" >
< /枚举>
<过程扩展= " true " >
< /操作符>
< /操作符>
> < /过程
< /操作符>
< /操作符>
> < /过程
< /操作符>
> < /过程
1
答案
附加信息:
找不到为什么下面的对象会在我之前的帖子中返回错误消息的原因。
如果有人有什么建议,请告诉我。
我按照下面Github keras-team/keras的帖子中建议的那样添加了一个Dense层来研究模型。
你有解决这个问题的办法吗?我看不出您的流程或层的架构有任何问题。
cc@pschlunder
嗨@luc_bartkowski,
循环层的输入形状需要从时间步长开始。所以(时间步长,输入尺寸)就是你需要的形状。在你的例子中,这应该是(20,4)。你可能想要使用值系列扩展的窗口操作符来创建一个窗口大小为20的示例集。请查看“sp_500_regression”内的Keras Samples文件夹中的示例过程“s&p-500-regression”。
此外,你的最后一层应该是一个密集的层,每个类值包含一个神经元,所以在你的例子中是3。
BTW:请确保始终检查RapidMiner Studio的“帮助”视图,以获取有关操作员处理和帮助设置参数的信息。
希望这能帮到你,
菲利普
第一:问题领域:我的输入数据是金融OHLC,所以4个属性/特征。
附加假设:Window操作符中的窗口大小= 10,所以是10个时间步长。
我想做分类,而不是预测。因此,我没有在窗口操作符中生成标签。如果您确实在Window操作符中生成了一个标签,或者您使用了另外一些时间步长、地平线等,那么您必须相应地调整下面的参数。
因此,在我的应用程序中,他的结果变成了一个Keras操作符输入示例,设置了具有4*10 = 40个正常(窗口)属性和一个标签的“n”记录。Keras操作符输入形状为“(40,)”,包括括号和逗号。
添加核心层重塑操作符,作为Keras操作符中的第一个操作符添加,应该获得“(10,4)”的目标形状。
这是我怀疑每个人都出错的地方:是的,我们都使用RNN,但不是作为Keras操作符中的第一个操作符,而是第二个操作符。因此,输出形状由2个参数组成,而不是3个(这会产生错误)。
这解决了我的问题。训练不再有问题了。
希望这对你有所帮助。