我正在研究一个神经网络,试图进行预测。为此,我有一个包含值的数组数组,我想知道下一个值会是什么。
为了练习,我做了一些非常简单的事情,但它不起作用(返回的值是错误的),你能解释一下我错过了什么吗?
const NN = new brain.recurrent.LSTMTimeStep({ inputSize: 2, hiddenLayers: [10], outputSize: 2,});let data = [ [1, 2], [2, 4], [3, 6], [4, 8], [5, 10], [6, 12], [7, 14], [8, 16], [9, 18], [10, 20], [11, 22], [12, 24], [13, 26], [14, 28]];const config = { log: true, logPeriod: 100, errorThresh: 0.01, iterations: 4000}NN.train(data, config);let output = NN.forecast(data, 1);console.log(output)
我希望结果是 [15, 30],但它总是返回较低的值。
非常感谢
回答:
改变隐藏层的数量并增加一些迭代似乎是解决方案,我的AI并没有错,只是精度不够高
const NN = new brain.recurrent.LSTMTimeStep({ inputSize: 2, hiddenLayers: [2, 2], outputSize: 2,});let data = [ [1, 2], [2, 4], [3, 6], [4, 8], [5, 10], [6, 12], [7, 14], [8, 16], [9, 18], [10, 20], [11, 22], [12, 24], [13, 26], [14, 28]];const config = { log: true, logPeriod: 100, errorThresh: 0.01, learningRate: 0.001, iterations: 40000000}NN.train(data, config);let output = NN.forecast(data, 1);console.log(output)
通过降低学习率和增加迭代次数,神经网络有更多的时间来完美拟合数据。