疯狂的是,还没有一个简单的LSTM RNN预测时间序列数据的简单例子。

https://github.com/cazala/synaptic

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

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

const array = [
    0,
    0,
    0,
    1,
    0,
    0,
    0,
    1
];

那里有一些漂亮的头脑在吹数据吗?

我想A)用数组训练算法,然后B)用以下数组测试算法:
const array = [
    0,
    0,
    0,
    1,
    0,
    0,
    0,
    1,
    0
];

应该导致它预测0

不幸的是,文档非常糟糕,没有清晰的代码示例。有人有例子吗?

最佳答案

这个答案不是用Synaptic写的,而是Neataptic。我决定做出一个简短的回答,我将很快将其包含在文档中。这是代码,它可以工作9/10次:

var network = new neataptic.architect.LSTM(1,6,1);

// when the timeseries is [0,0,0,1,0,0,0,1...]
var trainingData = [
  { input: [0], output: [0] },
  { input: [0], output: [0] },
  { input: [0], output: [1] },
  { input: [1], output: [0] },
  { input: [0], output: [0] },
  { input: [0], output: [0] },
  { input: [0], output: [1] },
];

network.train(trainingData, {
  log: 500,
  iterations: 6000,
  error: 0.03,
  clear: true,
  rate: 0.05,
});

Run it on JSFIDDLE to see the prediction!有关更多预测,请打开this one

我做出的一些选择的解释:
  • 我将选项 clear 设置为true,因为您想进行时间顺序的时间序列预测。这样可以确保网络从每次训练迭代的“开始”开始,而不是从上一次迭代的“结束”开始。
  • 汇率相当低,MSE错误为~0.2
  • 时会卡住更高的汇率
  • LSTM有1个块,每个块包含6个内存节点,较小的内存似乎也不起作用。
  • 关于javascript - 突触js lstm rnn算法的简单示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43574799/

    10-12 22:53