7

真是太疯狂了非常简单LSTM RNN预测时间序列数据的示例。

https://github.com/cazala/synapic网站

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上运行它以查看预测!有关更多预测,请打开这个.

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

  • 我设置选项清楚的为true,因为您希望进行按时间顺序的时间序列预测。这确保了网络从每次训练迭代的“开始”开始,而不是从上一次迭代的“结束”继续。
  • 利率相当低,较高的利率将因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);,请注意A类&.
    – 基思
    评论 2017年12月1日12:51

你的答案

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

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