为什么Keras LSTM期望3个维度,而不是提供的样本、时间步长和特性?

luc_bartkowskiluc_bartkowski 成员职位:46Maven
2020年3月编辑 帮助

我想用LSTM对OHLC数据的时间序列进行分类。

该示例集被转换为样本、时间步长和特征,以使用重塑层馈送LSTM。

当我运行这个模型时,我得到如下图所示的错误消息。

我做错了什么?

截屏2018-04-13 at 07.37.01.png

我的模型如下所示。

我的输入示例集由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 " >






















< /操作符>






















< /操作符>




> < /过程
< /操作符>



< /操作符>













> < /过程
< /操作符>
> < /过程

Thomas_Ott

答案

  • luc_bartkowskiluc_bartkowski 成员职位:46Maven

    附加信息:

    找不到为什么下面的对象会在我之前的帖子中返回错误消息的原因。

    如果有人有什么建议,请告诉我。

    截屏2018-04-13 at 20.05.01.png

    我按照下面Github keras-team/keras的帖子中建议的那样添加了一个Dense层来研究模型。

    截图2018-04-13:20.07.16.png

  • israel_jimenezisrael_jimenez RapidMiner注册分析师、会员职位:2贡献我

    你有解决这个问题的办法吗?我看不出您的流程或层的架构有任何问题。

  • sgenzersgenzer 管理员,版主,员工,RapidMiner认证分析师,社区经理,成员,大学教授,PM版主职位:2959年社区经理
  • pschlunderpschlunder 员工、RapidMiner认证分析师、RapidMiner认证专家、RMResearcher、会员职位:96RM研究

    @luc_bartkowski

    循环层的输入形状需要从时间步长开始。所以(时间步长,输入尺寸)就是你需要的形状。在你的例子中,这应该是(20,4)。你可能想要使用值系列扩展的窗口操作符来创建一个窗口大小为20的示例集。请查看“sp_500_regression”内的Keras Samples文件夹中的示例过程“s&p-500-regression”。

    此外,你的最后一层应该是一个密集的层,每个类值包含一个神经元,所以在你的例子中是3。

    BTW:请确保始终检查RapidMiner Studio的“帮助”视图,以获取有关操作员处理和帮助设置参数的信息。

    希望这能帮到你,

    菲利普

    Edin_Klapic
  • luc_bartkowskiluc_bartkowski 成员职位:46Maven
    嗨,这是关于RapidMiner Keras LSTM输入形状的操作方法:

    第一:问题领域:我的输入数据是金融OHLC,所以4个属性/特征。
    附加假设:Window操作符中的窗口大小= 10,所以是10个时间步长。

    我想做分类,而不是预测。因此,我没有在窗口操作符中生成标签。如果您确实在Window操作符中生成了一个标签,或者您使用了另外一些时间步长、地平线等,那么您必须相应地调整下面的参数。

    因此,在我的应用程序中,他的结果变成了一个Keras操作符输入示例,设置了具有4*10 = 40个正常(窗口)属性和一个标签的“n”记录。Keras操作符输入形状为“(40,)”,包括括号和逗号。
    添加核心层重塑操作符,作为Keras操作符中的第一个操作符添加,应该获得“(10,4)”的目标形状。
    这是我怀疑每个人都出错的地方:是的,我们都使用RNN,但不是作为Keras操作符中的第一个操作符,而是第二个操作符。因此,输出形状由2个参数组成,而不是3个(这会产生错误)。

    这解决了我的问题。训练不再有问题了。
    希望这对你有所帮助。
    sgenzer
登录注册置评。