ml5.js入门一(介绍)+NeuralNetwork神经网络

2023-11-09 21:20

本文主要是介绍ml5.js入门一(介绍)+NeuralNetwork神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ml5.js

一 ,ml5.js是什么

ml5.js 它是基于Tensorflow.js的一个非常简便易用的接口,目的是让更广泛的受众更容易使用机器学习。(演示都是根据官网实例demo)

二,功能介绍(建议大家结合官方文档食用)

交流群:811710917
ml5.js主要分为三个方面

  1. 图像:
    图像分类器,姿势网,身体像素,积卷神经,手势,面网,人脸接口,风格转移,像素对像素,CVAE,DCGAN,草图RNN,物体检测器
  2. 声音:
    声音分类,音高检测
  3. 文本:
    字符RNN
    情绪
    Word2Vec

在学习他们之前首先需要了解

  • NeuralNetwork神经网络
  • FeatureExtractor特征提取
  • KNNClassifier最邻近结点算法
  • kmeansk均值聚类算法

NeuralNetwork神经网络

创建您自己的神经网络并在浏览器中使用ml5.neuralNetwork. 收集数据以训练您的神经网络或使用现有数据实时训练您的神经网络。一旦经过训练,您的神经网络就可以执行classification或regression执行任务。

——分类classification:这里是一个输入rgb判断是什么颜色的demo
<html><head><meta charset="UTF-8"><title>Image classification using MobileNet and p5.js</title><script src="../p5.min.js"></script><script src="../ml5.js"></script>
</head><body><!-- 分类 --><script src="./script.js"></script><!-- 回归 --><!-- <script src="./script2.js"></script> --><!-- XOR --><!-- <script src="./XOR.js"></script> --><!-- pose --><!-- <script src="./pose.js"></script> -->
</body></html>

{"data": [{"r":255, "g":0, "b":0 ,"color": "red-ish"},{"r":256, "g":0, "b":0 ,"color": "red-ish"},{"r":254, "g":0, "b":0 ,"color": "red-ish"},{"r":0, "g":254, "b":0 ,"color": "green-ish"},{"r":0, "g":255, "b":0 ,"color": "green-ish"},{"r":0, "g":256, "b":0 ,"color": "green-ish"},{"r":0, "g":0, "b":254 ,"color": "blue-ish"},{"r":0, "g":0, "b":255 ,"color": "blue-ish"},{"r":0, "g":0, "b":256 ,"color": "blue-ish"}
] }
// ./script.js
/**加载外面的数据 */
// 1 加载外部json设置
const options = {dataUrl: 'data.json',inputs: ['r', 'g', 'b'],outputs: ['color'],task: 'classification', // classification分类:yes/no : regression回归:估计值是否接近一个范围debug:true
}
// 2 初始化你的神经网络
const nn = ml5.neuralNetwork(options, dataLoaded)
// 3 序列化数据,然后训练他
function dataLoaded (){nn.normalizeData()trainModel()
}
// 4 训练 模型
function trainModel() {const trainingOptions = {epochs:32,batchSize: 12}nn.train(trainingOptions, finishedTraining)
}
// 5 使用训练好的模型
function finishedTraining (){classify()
}
// 6 定义一个分类器
function classify(){
// 这里是所需要判断的值const input = {r:255,g:0,b:0}nn.classify(input, handleResults)
}
// 7 给分类器 一个回调函数
function handleResults (error, result) {if(error){console.error(error);return}console.log(result);
}/**加载现有的数据 */
// // Step 1: 加载数据
// const data = [
//   {r:255, g:0, b:0, color:'red-ish'},
//   {r:254, g:0, b:0, color:'red-ish'},
//   {r:253, g:0, b:0, color:'red-ish'},
//   {r:0, g:255, b:0, color:'green-ish'},
//   {r:0, g:254, b:0, color:'green-ish'},
//   {r:0, g:253, b:0, color:'green-ish'},
//   {r:0, g:0, b:255, color:'blue-ish'},
//   {r:0, g:0, b:254, color:'blue-ish'},
//   {r:0, g:0, b:253, color:'blue-ish'}
// ];// // Step 2: 神经网络设置
// const options = {
//   task: 'classification',
//   debug: true
// }// // Step 3: 初始化神经网络
// const nn = ml5.neuralNetwork(options);// // Step 4: 给神经网络加载数据
// data.forEach(item => {
//   const inputs = {
//     r: item.r, 
//     g: item.g, 
//     b: item.b
//   };
//   const output = {
//     color: item.color
//   };//   nn.addData(inputs, output);
// });// // Step 5: 序列化数据
// nn.normalizeData();// // Step 6: 训练神经网络
// const trainingOptions = {
//   epochs: 32,
//   batchSize: 12
// }
// nn.train(trainingOptions, finishedTraining);// // Step 7: 使用训练模型
// function finishedTraining(){
//   classify();
// }// // Step 8: 创建一个分类器
// function classify(){
//   const input = {
//     r: 255, 
//     g: 255, 
//     b: 0
//   }
//   nn.classify(input, handleResults);
// }// // Step 9: 给分类器定义后调函数
// function handleResults(error, result) {
//     if(error){
//       console.error(error);
//       return;
//     }
//     console.log(result); // {label: 'red', confidence: 0.8};
// }
观察运行结果,推断出输入的颜色为红色的概率为0.91(91%)

在这里插入图片描述

——regression 创建一堆小球,然后预测小球们的组合轨迹的demo

<html><head><meta charset="UTF-8"><title>Image classification using MobileNet and p5.js</title><script src="../p5.min.js"></script><script src="../ml5.js"></script>
</head><body><!-- 分类 --><!-- <script src="./script.js"></script> --><!-- 回归 --><script src="./script2.js"></script><!-- XOR --><!-- <script src="./XOR.js"></script> --><!-- pose --><!-- <script src="./pose.js"></script> -->
</body></html>
// ./script2.js
let nn;
let counter = 0;const options = {task: "regression",// 回归debug: true,
};// 创建预测数据
function createTrainingData() {for (let i = 0; i < width; i += 10) {const iters = floor(random(5, 20));const spread = 50;for (let j = 0; j < iters; j += 1) {const data = [i, height - i + floor(random(-spread, spread))];fill(0, 0, 255);ellipse(data[0], data[1], 10, 10);// 给神经添加训练数据nn.addData([data[0]], [data[1]]);}}
}
// p5.js 特有的函数,加载完毕后会自动调用一次
function setup() {// 创建一个画布createCanvas(400, 400);// 初始化神经网络nn = ml5.neuralNetwork(options);console.log(nn);// 创建训练数据createTrainingData();// 数据序列化 ——》200-》2nn.normalizeData();// 训练参数const trainingOptions = {batchSize: 24,// 单次训练批次数量epochs: 10,// 训练批次};// 训练神经网络nn.train(trainingOptions, finishedTraining); // 小提示ml5支持promise
}
// 完成训练后调用的回调函数
function finishedTraining() {if (counter < 400) {// classification调用的是classify()// regression调用的是predict()// 预测nn.predict([counter], (err, results) => {if (err) {console.log(err);return;}console.log(results[0]);const prediction = results[0];const x = counter;const y = prediction.value;fill(255, 0, 0);rectMode(CENTER);rect(x, y, 10, 10);counter += 1;finishedTraining();});}
}

效果
在这里插入图片描述

第一篇就先写到这里吧 下一篇 FeatureExtractor特征提取

需要素材找我就行了haha

这篇关于ml5.js入门一(介绍)+NeuralNetwork神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/378482

相关文章

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC

MySQL索引踩坑合集从入门到精通

《MySQL索引踩坑合集从入门到精通》本文详细介绍了MySQL索引的使用,包括索引的类型、创建、使用、优化技巧及最佳实践,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录mysql索引完整教程:从入门到入土(附实战踩坑指南)一、索引是什么?为什么需要它?1.1 什么

Java Lettuce 客户端入门到生产的实现步骤

《JavaLettuce客户端入门到生产的实现步骤》本文主要介绍了JavaLettuce客户端入门到生产的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录1 安装依赖MavenGradle2 最小化连接示例3 核心特性速览4 生产环境配置建议5 常见问题

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

在Node.js中使用.env文件管理环境变量的全过程

《在Node.js中使用.env文件管理环境变量的全过程》Node.js应用程序通常依赖于环境变量来管理敏感信息或配置设置,.env文件已经成为一种流行的本地管理这些变量的方法,本文将探讨.env文件... 目录引言为什么使php用 .env 文件 ?如何在 Node.js 中使用 .env 文件最佳实践引

使用Node.js和PostgreSQL构建数据库应用

《使用Node.js和PostgreSQL构建数据库应用》PostgreSQL是一个功能强大的开源关系型数据库,而Node.js是构建高效网络应用的理想平台,结合这两个技术,我们可以创建出色的数据驱动... 目录初始化项目与安装依赖建立数据库连接执行CRUD操作查询数据插入数据更新数据删除数据完整示例与最佳

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可