Brain.js根据height/weight猜大人还是小孩
Brain.js guessing whether adult or child based on height/weight
我正在尝试设置一个简单的 brain.js 示例以了解其工作原理。我使用了 this tutorial(adult/child 示例的标记为 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 英尺,那么这取决于你的体重。
但是如果我把一个 clear child 放在那里(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
};
}
我正在尝试设置一个简单的 brain.js 示例以了解其工作原理。我使用了 this tutorial(adult/child 示例的标记为 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 英尺,那么这取决于你的体重。
但是如果我把一个 clear child 放在那里(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
};
}