7

没有一个非常简单LSTM RNN预测时间序列数据的示例。

https://github.com/cazala/突触

https://github.com/cazala/synaptic/wiki/Architect#lstm

我想使用以下数组中的历史数据:

常量数组=[0,0,0,1,0,0,0,1];

这里有一些令人震惊的数据,对吧?

我想A)用数组训练算法,然后B)用以下数组测试算法:

常量数组=[0,0,0,1,0,0,0,1,0];

应该会导致预测0.

不幸的是,文档非常糟糕,没有明确的代码示例。有人举过例子吗?

1

1答案1

重置为默认值
11

这个答案不是用Synaptic写的,而是用尼塔普特人。我决定快速回答,很快就会包含在文档中。这是代码,它可以工作9/10次:

var网络=新nedaptic.architect。LSTM(1,6,1);//当时间序列为[0,0,0,1,0,0,1…]时var培训数据=[{输入:[0],输出:[0]},{输入:[0],输出:[0]},{输入:[0],输出:[1]},{输入:[1],输出:[0]},{输入:[0],输出:[0]},{输入:[0],输出:[0]},{输入:[0],输出:[1]},];network.train(培训数据{对数:500,迭代次数:6000,误差:0.03,清除:true,比率:0.05,});

在JSFIDDLE上运行它以查看预测!有关更多预测,请打开这个.

我做出的一些选择的解释:

  • 我设置选项清楚的对,就像你想做时间序列预测一样。这确保了网络从每个训练迭代的“开始”开始,而不是从最后一次迭代的“结束”继续。
  • 速率相当低,较高的速率将停留在MSE误差~0.2
  • LSTM有一个由6个内存节点组成的块,较低的数量似乎也不起作用。
  • 1
    你能再解释一下什么是输入/输出吗?输入的是时间序列的第一个数字,输出的是时间系列的第二个数字吗?例如:如果我的时间序列是:[0.2,0.4,0.1,0.2],那么我会为第一行输入0.2并输出0.4吗?然后对于第二行,输入:0.4,输出:0.1?
    – 多舔
    2017年11月11日19:40
  • 1
    是的,确切地说,我会更新我的答案,使其更清楚。 2017年11月11日20:35
  • 2
    请注意,最新版本新的整洁建筑师。LSTM(1,6,1);,请注意一个&.
    – 基思
    2017年12月1日12:51

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.