Node.js中的TypeError:无法读取未定义的属性“ 0”

时间:2019-08-25 08:37:37

标签: javascript node.js neural-network

我想用brain.js在node.js中建立一个神经网络。它应该将功率提高一些。是的,我知道,无需使用神经网络就可以做到这一点。但是我正在学习。

我只是不知道该怎么办

var brain = require('brainjs');
var net = new brain.NeuralNetwork();

net.train([
    {input: [1 / 3], output: [1 / 9]}, 
    {input: [1 / 9], output: [1 / 81]},
    {input: [1 / 6], output: [1 / 36]},
    {input: [1 / 8], output: [1 / 64]}
]);

var input = 1/6;
console.log(input);
var output = net.run(input);
console.log(output);

我等待输出约0.027777777777777776。但是我知道了:

0.16666666666666666
[ NaN ]

出什么问题了?

3 个答案:

答案 0 :(得分:2)

我也在学习ML,我也许可以为您提供帮助 首先,您应该在第一行中输入“ brain.js”,而不是“ brainjs”

  

var brain = require('brain.js');

神经网络的工作方式是它们在给定的数据(即输入和输出)上进行训练,因此您不必为输入的数据定义公式

您还可以限制网络迭代的运行,因此您不必等待很长时间(迭代次数少,您就不会期望输出非常准确),如果我们学习模式 还请访问“ Brad Traversy”的youtube频道,他在brain.js上有非常不错的速成课程

这是对我有用的代码 并且您还应该查找LSTM等以进行学习 希望对您有帮助

def as_needed(expensive_computation, default):
    if random_condition():
       return expensive_computation()
    return default

答案 1 :(得分:1)

您必须像这样将输入作为数组提供

test()

答案 2 :(得分:1)

您需要以类似数组的形式提供输入

net.train([
    {input: [1 / 3], output: [1 / 9]}, 
    {input: [1 / 9], output: [1 / 81]},
    {input: [1 / 6], output: [1 / 36]},
    {input: [1 / 8], output: [1 / 64]}
]);

var output = net.run([input]);

或将训练更改为完全不使用数组

net.train([
    {input: 1 / 3, output: 1 / 9}, 
    {input: 1 / 9, output: 1 / 81},
    {input: 1 / 6, output: 1 / 36},
    {input: 1 / 8, output: 1 / 64}
]);

var output = net.run(input);