我试图建立一个简单的brain.js示例,以了解其工作原理。我使用了this tutorial(成人/儿童示例为5:10标记)。我的代码如下所示:



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

const network = new brain.NeuralNetwork();

network.train([
  {input:{height:1, weight:20},output:{adult:0}},
  {input:{height:2, weight:40},output:{adult:0}},
  {input:{height:3, weight:60},output:{adult:0}},
  {input:{height:4, weight:80},output:{adult:0}},
  {input:{height:5, weight:100},output:{adult:0}},
  {input:{height:5, weight:200},output:{adult:1}},
  {input:{height:6, weight:220},output:{adult:1}},
  {input:{height:7, weight:240},output:{adult:1}},
  {input:{height:8, weight:260},output:{adult:1}},

]);


const testPerson = network.run({height:1,weight:20})
console.log(testPerson)





很明显,如果您的身高不超过4英尺,那么您是个孩子;如果您的身高不超过6英尺,那么您就是一个成年人。如果您身高5英尺,则取决于您的体重。

但是,如果我在其中放一个清晰的孩子(testPerson),我会得到返回:

{ adult: 0.4641557037830353 }


似乎基于数据,应该更加有信心1英尺20磅的人不是成年人。

关于此软件的工作原理,我缺少什么?

最佳答案

您只需要标准化输入:https://jsfiddle.net/robertleeplummerjr/jn056e7L/5/

const network = new brain.NeuralNetwork();

network.train([
  {input:{height:1, weight:20},output:{child:1}},
  {input:{height:2, weight:40},output:{child:1}},
  {input:{height:3, weight:60},output:{child:1}},
  {input:{height:4, weight:80},output:{child:1}},
  {input:{height:5, weight:100},output:{child:1}},
  {input:{height:5, weight:200},output:{adult:1}},
  {input:{height:6, weight:220},output:{adult:1}},
  {input:{height:7, weight:240},output:{adult:1}},
  {input:{height:8, weight:260},output:{adult:1}},
].map(normalize))


const testChild = network.run(normalizeInput({height:2,weight:20}))
console.log('a child', testChild)
const testAdult = network.run(normalizeInput({height:5,weight:200}))
console.log('an adult', testAdult)

function normalize(item) {
  return {
    input: normalizeInput(item.input),
    output: item.output
  }
}

function normalizeInput(input) {
    return {
    height: input.height / 10,
    weight: input.weight / 300
  };
}

关于javascript - Brain.js根据高度/体重猜测是成人还是 child ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49966630/

10-10 15:28