这个答案不是用 Synaptic 写的,而是用新触感。我决定快速回答,并将很快将其包含在文档中。这是代码,它运行了 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,
});
在 JSFIDDLE 上运行它来查看预测!更多预测,请打开this one.
对我所做的一些选择的解释:
- 我设置了选项clear为 true,正如您想要进行的按时间顺序排列的时间序列预测。这确保网络从每次训练迭代的“开始”开始,而不是从上次迭代的“结束”继续。
- 利率相当低,较高的利率将陷入 MSE 误差
~0.2
- LSTM 有 1 个块(每块 6 个内存节点),数量较少似乎效果不佳。