首页
/ brain.js 技术文档

brain.js 技术文档

2024-12-20 02:24:06作者:谭伦延

1. 安装指南

在 Node.js 中安装

如果你使用的是 Node.js 环境,可以通过 npm 安装 brain.js

npm install brain

在浏览器中使用

在浏览器中使用时,需要下载最新的 brain.js 文件。由于训练过程计算量较大,建议在离线环境或使用 Worker 进行训练,然后通过 toFunction()toJSON() 方法将预训练的网络导入到你的网站中。

2. 项目的使用说明

基本使用

brain.js 是一个 JavaScript 神经网络库,可以用于训练和运行简单的神经网络。以下是一个使用 brain.js 来近似 XOR 函数的示例:

var net = new brain.NeuralNetwork();

net.train([{input: [0, 0], output: [0]},
           {input: [0, 1], output: [1]},
           {input: [1, 0], output: [1]},
           {input: [1, 1], output: [0]}]);

var output = net.run([1, 0]);  // [0.987]

训练数据格式

每个训练数据应包含 inputoutput,它们可以是 0 到 1 之间的数组或对象。例如,颜色对比示例中的训练数据格式如下:

var net = new brain.NeuralNetwork();

net.train([{input: { r: 0.03, g: 0.7, b: 0.5 }, output: { black: 1 }},
           {input: { r: 0.16, g: 0.09, b: 0.2 }, output: { white: 1 }},
           {input: { r: 0.5, g: 0.5, b: 1.0 }, output: { white: 1 }}]);

var output = net.run({ r: 1, g: 0.4, b: 0 });  // { white: 0.99, black: 0.002 }

训练选项

train() 方法的第二个参数可以传入一个选项对象,用于控制训练过程:

net.train(data, {
  errorThresh: 0.005,  // 错误阈值
  iterations: 20000,   // 最大训练迭代次数
  log: true,           // 是否定期输出训练进度
  logPeriod: 10,       // 输出训练进度的间隔迭代次数
  learningRate: 0.3    // 学习率
})

训练将在达到错误阈值或达到最大迭代次数时停止。

3. 项目API使用文档

train()

用于训练神经网络。接受一个包含训练数据的数组和一个选项对象。

run()

用于运行训练好的神经网络,接受一个输入数据并返回输出结果。

toJSON()

将神经网络的状态序列化为 JSON 格式,便于保存和加载。

fromJSON()

从 JSON 格式加载神经网络的状态。

toFunction()

生成一个独立的函数,该函数可以直接运行训练好的神经网络,无需导入 brain.js

4. 项目安装方式

Node.js 安装

通过 npm 安装:

npm install brain

浏览器使用

下载最新的 brain.js 文件,并在页面中引入:

<script src="path/to/brain.js"></script>

使用 Stream 进行训练

可以通过创建 WriteStream 来使用流式数据进行训练。具体示例可以参考 stream-example.js 文件。

var trainStream = net.createTrainStream({
  floodCallback: function() {
    // 重新填充数据流
  },
  doneTrainingCallback: function(info) {
    // 训练完成后的回调
  }
});

通过 pipe() 方法将数据流连接到 trainStream,实现流式训练。

登录后查看全文
热门项目推荐

热门内容推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
53
468
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
878
517
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
336
1.1 K
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
180
264
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉Web框架。Rest, 宏路由,Json, 中间件,参数绑定与校验,文件上传下载,MCP......
Cangjie
87
14
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
349
381
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
612
60