机器学习领域新技术的迅猛发展帮助软件开发人员以前所未有的方式构建新的人工智能应用程序。
目前,大多数 AI 爱好者利用 Python 框架进行 AI 和机器学习开发。
但环顾四周,人们可能还会发现基于 JavaScript 的框架也正在 AI 中实现。
这个有趣的交叉点让我们探索和试验了一起使用 Javascript 和机器学习的奇怪可能性。
从我们的研究中分享,这里有一些简洁的 JavaScript 机器学习库,它们将 Javascript、机器学习、DNN 甚至 NLP 结合在一起。看一看。
1.TensorFlow.js
由于其全面的线性代数核心和深度学习层, Tensorflow.js在 2019 年已成为所有机器学习 Javascript 项目的面包和黄油。
它在支持的 API 数量上迅速赶上了它的 Python 姐妹,并且在这一点上,几乎机器学习中的任何问题都可以使用它来解决。
Tensorflow.js可以直接在浏览器中使用,同时利用 WebGL 进行加速。
支持浏览器和 Node.js 环境的 Tensorflow.js 模型已被包括Brain.js和machinelearn.js在内的许多开源库采用。
优点
- 它具有更好的计算图可视化。
- 它具有无缝性能、快速更新和频繁发布新功能的优势。
- 它可以部署在各种硬件机器上,从蜂窝设备到具有复杂设置的计算机。
- Tensorflow 具有高度并行性,旨在使用各种后端软件(GPU、ASIC)等。
缺点
- 不支持 Windows
- 缺少符号循环
- 除 Nvidia 外不支持 GPU,仅支持语言
2.Brain.js
Brain.js是一个用于神经网络的 Javascript 库,替代了(现已弃用的)“brain”库,它可以与Node.js或浏览器(注意计算)一起使用,并为不同的任务提供不同类型的网络。
优点
- 它非常适合使用高级语言快速创建简单的神经网络 (NN),您可以在其中利用大量开源库。
- 有了一个好的数据集和几行代码,你就可以创建一些非常有趣的功能。
- 它能够在客户端 javascript 上运行。
缺点
- 它将您的网络架构限制在只能执行简单应用程序的地步
- softmax 层或其他结构的可能性不大。
3.ml.js
ml.js是一个全面的通用 JavaScript ML 库,适用于浏览器和 Node.js。它为有监督和无监督问题提供简单且关键任务的模型和实用程序。它专注于 Javascript 和 Typescript 开发人员的简单性和多合一通用机器学习,提供聚类、分解、集成、装袋、线性模型、特征提取等。
优点
- 它允许对数组、哈希表、排序、随机数生成进行位操作。
- 它为线性代数、数组操作和优化提供了例程。
- 它支持交叉验证。
缺点
- 它对硬件加速的支持有限。
- 它对浏览器主机环境中的文件系统没有默认访问权限。
4.stidlib
stidlib是构建无限可扩展、自我修复 API 的最快、最简单的方法。标准库基于功能即服务(“无服务器”)架构,最初由 AWS Lambda 推广。您可以使用标准库在几分钟内为自己和其他开发人员构建模块化、可扩展的 API,而无需管理服务器、网关、域、编写文档或构建 SDK。您的开发工作流程从未如此简单——专注于编写您喜欢的代码,让标准库处理其他一切。
优点
- 轻松的 API 共享和访问控制。
- 自动生成的文档。
- 用于应用程序和库开发的经过全面测试的实用程序。
- 高性能、严谨、稳健的数学和统计函数
缺点
- 不支持计算反双曲正割。
- 不支持创建不包含运行时断言的项目构建。
5.ConvNetJS
ConvNetJS是另一个用于神经网络和深度学习的库。它可以在浏览器中训练神经网络。除了分类和回归问题,它还有仍在实验阶段的强化学习模块(使用 Q-learning)。ConvNetJS 为擅长图像识别的卷积神经网络提供支持。
优点
- 用 Javascript 制定和解决神经网络
- 完全在浏览器中训练深度学习模型(神经网络)
- 没有编译器,没有安装
缺点
- 对于想要使用它的初学者来说,难以管理并且缺乏简单性。
- 它的处理有时比其他工具慢。
6.Neataptic
Neataptic提供灵活的神经网络;只需一行代码即可删除神经元和突触。神经网络完全不需要固定的架构来发挥作用。这种灵活性允许通过使用多个线程完成的神经进化来为您的数据集塑造网络。
优点
- 多线程/GPU加速能力
- 神经元激活的可视化
- 自适应学习率(每个连接)
缺点
- 它的性能相对较差。
- 它不再维护。
7.Synaptic
Synaptic实现了一种通用的“无架构”算法,可用于创建比通常遇到的更广泛的网络类型。它带有一些预定义的网络——多层感知器、多层长短期记忆网络、液态机器等等。
优点
- 能够创建二阶和循环网络。
- 它带有一些预定义的网络。
缺点
- 它不再被积极维护。
- 与其他库相比,它的运行时间很慢
8.Keras
Keras已成为领先的神经网络库,用于在大量平台上创建和准备深度学习模型。它是用 Python 编写的,拥有超过 250,000 个个人客户端,是仅次于 TensorFlow 的第二大深度学习结构。
优点
- 它能够在程序中运行 Keras 模型。
- 能够利用 WebGL 3d-designs API 提供的 GPU(图形处理单元)支持。
- 模型可以在任何后端进行训练。
缺点
- 它仅在 CPU(中央处理器)模式下运行。
- 它只处理在其他框架上运行的高级 API。
- 如果您想为研究目的制作自己的抽象层,这不是很有用
9. Mathjs
Mathjs是一个可满足 JavaScript 中所有数学需求的库,具有广泛的线性代数 API,包括矩阵运算和核心数学。它非常轻量级,因为它不依赖于其他不断增加的加速技术,例如 WebAssembly 或 WebGL。
优点
- 包含一个灵活的表达式解析器。
- 也可以用作命令行应用程序
- 带有大量内置函数和常量
- 进行符号计算
缺点
- 它不是那么专业,因此不包括其他库中包含的功能,这些库专注于其他领域。
- 运行时间相对较慢。
10. Limdu.js
Limdu.js是 Node.js 的机器学习框架,支持二进制分类、多标签分类、特征工程、在线学习和实时分类。它目前处于 alpha 状态并正在寻找贡献者。
优点
- 序列化和反序列化的能力
- 多标签分类。
- 它还支持二进制分类
缺点
- 低贡献。
- 数据集的容易突变。
11.Neuro.js
Neuro是一个库,用于在 JavaScript 中开发和训练 ML 模型,并在浏览器或 Node.js 上进行部署。它还有助于构建 AI 助手和聊天机器人。
优点
- 它支持多标签分类。
- 在线学习
- 还支持实时分类。
缺点
- 它不支持网络工作者。
- 没有 LSTM 和随时间的反向传播。
12.deeplearn.js
deeplearn.js是一个用于机器智能的开源硬件加速 JavaScript 库。deeplearn.js将高性能机器学习构建块引入网络,允许您在浏览器中训练神经网络或在推理模式下运行预训练模型。
优点
- 它允许通过 WebGL Javascript API 使用 Javascript 实现 ML。
- 它可以通过 webGL 使用 GPU 等硬件加速器来执行更快、更出色的 2D 和 3D 图形计算。
- 能够执行更快的推理以及完整的反向传播。
缺点
- 它需要昂贵的 GPU。
- 由于复杂的数据模型,训练非常昂贵
13.Apache MXNetJS
MXNetJS是 Apache MXNet Javascript 包。MXNetJS 为浏览器带来了最先进的深度学习推理 API。它是使用 Emscripten 和 MXNet Amalgamation 生成的。
MXNetJS 允许您在任何计算图中运行最先进的深度学习模型的预测,并将深度学习的乐趣带到客户端。
优点
- XNet 包含一个动态依赖调度器
- MXNet 便携且轻巧,
- 可以在多个 GPU 和多台机器上有效扩展
缺点
- 与 Tensorflowjs 相比,它背后的社区要小得多;
- 它在研究界并不那么受欢迎。
14. Synapses
Synapses 是一个轻量级的神经网络库,适用于 js、JVM 和 .net。它的特点fitNetwork是一个新的神经网络,用一次观察训练。
优点
- 轻松创建神经网络
- 可以创建定制的神经网络
缺点
- 相对较新——两天前在撰写本文时推出
- 没有太多可用的文档
15. Compromise
Compromise是一个解释和解析文本的javascript库。并做出一些合理的决定。妥协通过压缩大量单词然后在运行时扩展它们来工作。
优点
- 足够快地在按键上运行
- 它体积小、速度快,而且通常足够好。
缺点
- 相对较新
- 没有太多可用的文档
结论
在本文中,我们将介绍 15 个最佳开源JavaScript 机器学习库,以扩展 JavaScript 的功能。
此外,作为拥有并使用正确的 JavaScript 机器学习库的开发人员,将帮助您寻求组合一种算法,该算法将利用您选择的机器学习项目的优势和能力。
本文只是 JavaScript 机器学习库的冰山一角,在以后的文章中还有更多内容需要介绍。