You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于身高体重的brain.js成人/儿童识别示例搭建技术咨询

用brain.js实现成人/儿童识别的简易神经网络

Hey,我正在捣鼓brain.js的简易示例,想搞明白它的运行逻辑,参考了某教程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}},
  // 这里还需要补充成人的样本数据哦!
]);

几个关键的补充点(避免踩坑):

  • 样本要均衡:目前只有儿童(adult:0)的样本,必须添加对应的成人(adult:1)数据,比如身高6、体重150这类符合成人特征的输入,不然模型根本学不出区分规则
  • 数据归一化更靠谱:直接用原始的身高体重数值可能导致模型收敛慢,建议把数值缩到0-1的范围,比如身高除以8,体重除以200,这样模型训练效率会更高
  • 别忘了测试模型:训练完之后,一定要用network.run()传入测试数据,比如{height:5.5, weight:130},看看输出的adult概率是不是符合预期
  • 调整训练参数:如果模型效果不好,可以给train()方法加配置,比如network.train(data, { iterations: 10000, errorThresh: 0.0001 }),增加迭代次数或者降低误差阈值

比如补充完整后的代码大概是这样:

var brain = require("brain.js");
const network = new brain.NeuralNetwork();

// 归一化处理后的数据
const trainingData = [
  {input:{height:1/8, weight:20/200},output:{adult:0}},
  {input:{height:2/8, weight:40/200},output:{adult:0}},
  {input:{height:3/8, weight:60/200},output:{adult:0}},
  {input:{height:4/8, weight:80/200},output:{adult:0}},
  {input:{height:5/8, weight:100/200},output:{adult:0}},
  {input:{height:6/8, weight:150/200},output:{adult:1}},
  {input:{height:7/8, weight:180/200},output:{adult:1}},
  {input:{height:8/8, weight:200/200},output:{adult:1}}
];

// 带参数训练
network.train(trainingData, {
  iterations: 20000,
  errorThresh: 0.00001,
  log: (stats) => console.log(stats) // 可以查看训练过程的误差变化
});

// 测试
const testResult = network.run({height:5.5/8, weight:130/200});
console.log(`成人概率:${testResult.adult.toFixed(4)}`);

这样跑起来应该就能得到比较合理的识别结果啦!

内容的提问来源于stack exchange,提问作者Nick Manning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:47:27