Keras LSTM范例

时间:2019-01-26 00:38:02

标签: python keras lstm recurrent-neural-network

我有一个具有多个输入功能和一个输出(分类)的时间序列。我想创建一个可以预测每一步输出的模型。

我的数据如下:

x:[[0.4,0.8,-1],[1,1.6,-0.2],....]

y:[[1],[0],...]

因此,当给定单个特征向量时,我希望模型输出0或1。该特征向量不是任何类型的序列,因为这只是简单的时间序列。

我有以下问题:

  1. 由于Keras要求将数据格式设置为(batch_size, time_steps, num_features),并且我已经修复了num_features = 3,所以我应该为batch_sizetime_steps输入什么?

  2. 我应该为stateful的值输入什么?由于我的数据是按照特定的顺序排列的,因此列表中的第一个事件排在第一位,第二和第三个依次出现,依此类推,因此我假设我将stateful = True放在了位置?

2 个答案:

答案 0 :(得分:0)

我不确定,但是您的batch_size可以自动设置,time_steps等于功能集的数量,因此对于[[0.4,0.8,-1]],其1为[[0.4,0.8,-1], [1,1.6,-0.2]] 2等。尝试将数据重塑为(shape [0],3)。

答案 1 :(得分:0)

如果您刚刚开始训练LSTM模型,建议您使用stateful=False。一旦您对输入形状和LSTM的工作方式更加满意,就可以考虑使用stateful=True。您可以详细了解here

话虽如此,Keras要求将数据格式化为(num_samples, time_stepss, num_features)batch_size是您要拟合模型时设置的参数。实际上,batch_sizetime_steps都是超参数,您可能需要一周,然后看看哪个参数会带来更好的性能。因此,首先确定time_steps,然后确定样本是否重叠。

例如,您可以决定创建一个time_steps=4且每个样本之间有2个time_step重叠的样本:

x [0],x [1],x [2],x [3]-> y [0],y [1],y [2],y [3]

x [2],x [3],x [4],x [5]-> y [2],y [3],y [4],y [5]

x [4],x [5],x [6],x [7]-> y [4],y [5],y [6],y [7]

...

在固定time_steps和重叠的情况下,您将获得总计num_samples。然后,您可以使用model.fit()(例如32、64等)将数据输入到batch_size中。

如果要避免编写代码来重塑数据,可以使用Keras的TimeseriesGenerator。请注意,time_steps使用长度,stride确定重叠。