Brain.js 的力量:构建多样化的人工智能应用程序

机器学习(ML)是人工智能 (AI) 的一种形式,旨在构建可以从处理的数据中学习或使用数据更好地执行的系统。人工智能是模仿人类智能的系统或机器的总称。

机器学习(ML)与复杂的数学纠缠在一起,让大多数初学者感到害怕。由于与密集的数学方程和看似神秘的术语的联系,这门学科通常看起来难以入门。

随着 Brain.js 的出现,可以更加轻松地驾驭机器学习,摆脱令人生畏的数学问题,并让初学者能够顺利进入这个有趣的世界。本文通过一个实际示例演示 Brain.js 如何轻松理解神经网络。

基础知识

神经网络是机器学习的支柱, Brain.js 可以用 JavaScript 创建神经网络,超越互联网上以 Python 为中心的文档。 Brain.js 让 Web 开发人员更容易理解这个概念。

将神经网络想象成人脑,一个由分层互连节点组成的网络。这些层包括输入层、隐藏层和输出层,以及从输入单向移动到输出的数据。

神经网络消耗大量标记数据,学习模式和关联,做出预测,然后反映所需的输出。令人惊讶的是,神经网络的准确性和速度超越了人类大脑!

Brain.js

Brain.js 是一个开源库,是一种针对神经网络的 JavaScript 库。它简化了教导机器如何识别给定输入和输出之间的模式和关系的任务。它简单明了,很适合初学者,为具有 Web 开发背景的开发人员提供了平滑的学习曲线。

借助 Brain.js 构建神经网络、使用数据集对其进行训练并逐渐让模型根据学习到的数据进行预测变得可行。

打开方式

首先,像其它前端项目一样,使用 npm 安装 Brain.js:

npm install brain.js

假设训练数据位于 JSON 文件 data.json 中,项目结构将如下所示:

brainjs┣ node_modules┣ data.json┣ index.js┣ package-lock.json┗ package.json

接下来导入 Brain.js 库和包含训练数据的数据文件。然后构建神经网络布局,如下代码:

/*** 引入 Brain.js*/
const brain = require("brain.js");/*** 导入数据文件*/
const data = require("./data.json");/*** 创建神经网络*/
const network = new brain.recurrent.LSTM();

使用 Brain.js 内置的 LSTM(长短期记忆)。 LSTM 是一种 RNN(循环神经网络),允许机器学习序列具有更长的时间步长,从而避免与长期依赖相关的问题。

训练模型

这里训练数据将是一个对象数组,其中每个对象包括键值 text 和 category。根据文本中的单词,可以将给定的短语分类为基于后端 backend 或基于前端 frontend 。

[{"text": "the user interface component is fixed","category": "frontend"},{"text": "the css file look inituitive","category": "frontend"},{"text": "i need a few ui designs","category": "frontend"},{"text": "the database has issues","category": "backend"},{"text": "the button is centered","category": "frontend"},{"text": "make it clickable","category": "frontend"},{"text": "i did the api integration","category": "backend"},{"text": "a driver code should have less memory usgae","category": "backend"},{"text": "it needs more memory","category": "backend"},{"text": "code with responsive design in users interface","category": "frontend"},{"text": "navigate the website easily","category": "frontend"},{"text": "user login and authentication","category": "backend"},{"text": "forms and dropdowns lists","category": "frontend"},{"text": "username password email are stored","category": "backend"},{"text": "programming loading animation","category": "frontend"},{"text": "mysql, mongo, firebase databases","category": "backend"},{"text": "restful api is useful with backend","category": "backend"},{"text": "data access layer is not presentation layer","category": "backend"},{"text": "the web browser loads dynamic webpages slowly","category": "frontend"}
]

将这些数据提供给神经网络进行训练。为了训练模型,这里加载训练数据并对其进行迭代:

/*** 训练模型和设置数字,在训练过程中进行迭代*/
network.train(data, {iterations: 2000,
});

由于神经网络通过多次迭代来学习模式,因此这个步骤可能非常耗时。

测试模型

训练模型后,将向其提供一个句子来确定该短语是前端术语还是后端术语:

/** 提供输入进行分类 */
const output = network.run("navigate the website easily");
console.log(`分类:${output}`);

对于句子 navigate the website easily,模型预测的分类为 frontend

总结

Brain.js 是一个优秀的库,适合具有 Web 开发背景的且对机器学习有兴趣的初学者。本文阐述了通过使用 Brain.js 构建机器学习模型(ML 的训练、测试和预测)的简便性。

Brain.js 让 JavaScript 开发人员更容易使用机器学习,它可能不是唯一的机器学习库,就像 TensorFlow.js 和 ML5.js 等其他库一样,但它无疑提供了最轻松的学习曲线之一。

虽然 Brain.js 可能不涵盖大规模机器学习项目,但它确实提供了一个绝佳的起点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795751.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决nginx代理后,前端拿不到后端自定义的header

先说结论,因为前端和nginx对接,所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回,前后端本地联调没有问题 response.s…

嵌入式驱动学习第六周——内核函数调用(堆栈打印)

前言 在内核中,函数调用堆栈非常重要,因为它可以帮助开发人员理解代码是如何执行的,从而进行调试、性能优化或问题排查。堆栈可以显示当前执行的函数以及导致该函数调用的先前函数,从而形成一个函数调用链。本篇博客就介绍堆栈打印…

软件无线电原理

常规软件无线电接收器: 首先,来自天线的射频信号被放大,通常射频部分利用一个调谐器将感兴趣的频段区域的信号进行放大。这个放大的射频信号被送入一个混频器。来自本振的信号也被送入混频器,其频率由无线电的调谐控制决定。混频器…

【LeetCode】--- 动态规划 集训(二)

目录 一、63. 不同路径 II1.1 题目解析1.2 状态转移方程1.3 解题代码 二、931. 下降路径最小和2.1 题目解析2.2 状态转移方程2.3 解题代码三、174. 地下城游戏3.1 题目解析3.2 状态转移方程3.3 解题代码 一、63. 不同路径 II 题目地址: 不同路径 II 一个机器人位于…

传输层 --- TCP (下篇)

目录 1. 超时重传 1.1. 数据段丢包 1.2. 接收方发送的ACK丢包 1.3. 超时重传的超时时间如何设置 2. 流量控制 3. 滑动窗口 3.1. 初步理解滑动窗口 3.2. 滑动窗口的完善理解 3.3. 关于快重传的补充 3.4. 快重传和超时重传的区别 4. 拥塞控制 4.1. 拥塞控制的宏观认识…

「 典型安全漏洞系列 」11.身份验证漏洞详解

身份验证是验证用户或客户端身份的过程。网站可能会暴露给任何连接到互联网的人。这使得健壮的身份验证机制成为有效的网络安全不可或缺的一部分。 1. 什么是身份验证 身份验证即认证,是验证给定用户或客户端身份的过程。身份验证漏洞使攻击者能够访问敏感数据和功…

Linux网络基础 (三) —— Socket

文章目录 Socket 编程基本概念Socket背景Socket 为了解决什么问题 socketsockaddr结构sockaddrsockaddr_insockaddr 和 sockaddr_in 的关系sockaddr_un 示例代码 🎖 博主的CSDN主页:Ryan.Alaskan Malamute 📜 博主的代码仓库主页 [ Gitee ]&…

【MySQL】数据操作语句(DML)

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

【论文通读】AgentStudio: A Toolkit for Building General Virtual Agents

AgentStudio: A Toolkit for Building General Virtual Agents 前言AbstractMotivationFramework评估GUI GroudingReal-World Cross-Application Benchmark Suite Conclusion 前言 来自昆仑万象的一篇智能体环境数据大一统框架工作,对未来计算机智能体的发展具有指…

FPGA常用IP核之FIFO学习

IP核是FPGA芯片公司提供的逻辑功能块,在FPGA芯片中可以进行优化和预先配置,可以直接在用户设计的程序中使用,应用范围很广。在FPGA设计开发过程中使用IP核,可以大大的缩短开发周期,高度优化的IP核可以使FPG开发工程师专…

前端三剑客 —— CSS (第六节)

目录 内容回顾: 弹性布局属性介绍 案例演示 商品案例 布局分析 登录案例 网格布局 内容回顾: 变量:定义变量使用 --名称:值; 使用变量: 属性名:var(--名称)&a…

虚拟主机、VPS主机和云服务器的区别

对于每个建站新手来说,首先要解决的就是服务器购买的问题,目前市面有很多类型的服务器,常见的有:阿里云、腾讯云、Vultr云服务器,也有RackNerd、Cloudways等提供的VPS,还有SiteGround、ChemiCloud 、 Hosti…

数据结构之堆底层实现的循序渐进

题外话 把没写的都补回来! 正题 堆 概念 堆是一棵完全二叉树,因此可以层序的规则采用顺序的方式来高效存储, 大根堆:指根结点比左右孩子都大的堆 小根堆:指根结点比左右孩子都小的堆 性质 1.堆中某个节点的值总是不大于或不小于其父节点的值 2…

鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口】

一、设置应用主窗口说明 在Stage模型下,应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中,通过WindowStage获取应用主窗口,即可对其进行属性设置等操作。还可以在应用配置文件中设置应用主窗口的属性&…

每日一题(leetcode1026):节点与其祖先的最大差值--dfs

考虑到只能计算祖先之间的节点差而不能计算兄弟之间的节点差,所以思考使用dfs来解决该题。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), ri…

嵌入式开发学习---(部分)数据结构(无代码)

数据结构 为什么学习数据结构? 1)c语言告诉如何写程序,数据结构是如何简洁高效的写程序 2)遇到一个实际问题,需要写程序去实现相应功能,需要解决那两个方面的问题? 如何表达数据之间的逻辑规律…

背包问题---

一、背包模型 有一个体积为V的背包,商店有n个物品,每个物品有一个价值v和体积w,每个物品只能被拿一次,问能够装下物品的最大价值。 这里每一种物品只有两种状态即"拿"或"不拿". 设状态dp[i][j]表示到第i个物品为止,拿的物品总体积为j的情况下的最大价…

一、持续集成介绍

持续集成介绍 一、什么是持续集成二、持续集成的流程三、持续集成的组成要素四、持续集成的好处 一、什么是持续集成 持续集成(CI)指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可…

LeetCode:1483. 树节点的第 K 个祖先(倍增 Java)

目录 1483. 树节点的第 K 个祖先 题目描述: 实现代码与解析: 倍增 原理思路: 1483. 树节点的第 K 个祖先 题目描述: 给你一棵树,树上有 n 个节点,按从 0 到 n-1 编号。树以父节点数组的形式给出&#…

软件测试——黑盒测试

黑盒测试也就是针对功能进行测试,白盒测试就是后端根据自己的代码逻辑进行一下自测,灰盒测试就是黑盒和白盒的混合测试。 1.黑盒测试主要发现以下类型的错误 对比需求规格说明书功能遗漏或者不一致。 接口错误 数据库连接访问错误 效率不高&#xff…