【译】10个机器学习的JavaScript示例
原文地址:10 Machine Learning Examples in JavaScript
在过去的每一年,用于机器学习(Machine Learning)的库在变得越来越快和易用。一直以来Python都是机器学习的首选语言,但现在几乎可将所有语言用于神经网络(neural networks),这里当然也包括JavaScript!
近几年,Web生态系统取得了很大进步,虽然JavaScript和Node.js的性能比Python和Java略差,但它们已足够处理许多机器学习问题。Web语言具有被广泛且易于使用的优势——你只需一个Web浏览器就可以运行一个JavaScript语言编写的机器学习项目。
虽然许多JavaScript语言编写的机器学习库是刚刚诞生并且还在持续开发中,但还是值得去尝试使用它们。这篇文章会介绍几个JavaScript语言编写的机器学习库以及一些很酷的AI Web应用示例,它们可以很好的帮助你开始AI之旅。
1. Brain

使用Brain 可以轻松的创建神经网络,并且可通过输入/输出数据对它进行训练。因为训练神经网络会消耗比较多的资源,所以推荐在Node.js环境中而不是直接使用浏览器来训练神经网络。在官网上有个可以识别颜色(recognize color contrast)的小demo (PS:试了下,这个demo现在是404页面)。
2. Deep playground

这是一个寓教于乐的Web应用,可以让你以游戏的方式来探索神经网络的不同部分。它有一个友好的界面用于让你控制数据的输入,算法所用的神经元数量以及其它一些会影响输出结果的权值因素。这是一个开源项目,它是使用TypeScript编写的机器学习库并且有完善的文档,从中我们可以许多东西。
3. FlappyLearning

FlappyLearning 项目大约800行代码,这个项目包含一个机器学习库并且实现了一个很有趣的demo——学习玩 Flappy Bird 游戏。它使用了一种叫做 Neuroevolution 的AI技术,使用了受自然神经系统激发而产生的算法,可以从每次成功或失败的迭代中进行动态进行学习。
4. Synaptic

Synaptic是一个架构无关(architecture-agnostic)且得到积极维护的Node.js和浏览器库,它允许开发者构建任何类型的神经网络。它有几个内置的架构,使得可以快速测试和比较不同机器学习算法间的异同。它还提供了介绍神经网络的文档及几个实用demo和其它可以帮助我们学习机器学习的教程。
5. Land Lines

Land Lines 是一个有趣的用于搜寻地球卫星图片的Chrome网络实验(web experiment)。这个应用无需服务调用:它完全运行在浏览器环境中,得益于机器学习的使用,WebGL也可以在移动设备中有很好的表现。你可以在GitHub 上浏览源码或者在这里阅读完整的示例。
6. ConvNetJS

尽管已不再被积极的维护,但ConvNetJS依然是JavaScriptp中最为先进的深度学习库之一。这个库最初由斯坦福大学开发,然后ConvNetJS开始在GitHub上流行,社区为它添加了许多特性和教程。ConvNetJS直接运行在浏览器环境中,支持多种学习技术,并且它接近底层原理使得它更适有较多神经网络方面经验的人。
7. Thing Translator

Thing Translator是一个网络实验,它可以让你的手机识别真是的物体并用不同的语言标注物体的名称。这个应用完全建立在web技术之上并且利用了Google提供的两种机器学习APIs——用于图像识别的Cloud Vision 和用于自然语言翻译的Translate API。
8. Neurojs

Nerojs用于建立基于增强学习(reinforcement learning)的AI系统框架。不幸的是这个开源项目除了一个自动驾驶实验的demo外并没有完善的文档,这个demo对组成神经网络的不同部分有着很好的描述。这个库借助如现代化工具如:webpack 和babel,使用纯JavaScript进行开发。
9. Machine_learning

这也是一个允许我们仅使用JavaScript创建并训练神经网络的库。它很容易就可以安装到Node.js和客户端环境,并且拥有对开发人员十分友好的的API。这个库提供了许多示例,可以帮助你理解机器学习的核心原理。
10. DeepForge

DeepForge是一个用于深度学习且易于使用的开发环境。它允许你使用简单的图形接口创建神经网络,支持在远程机器上训练模型,并且内置版本控制系统。这个项目基于Node.js和MongoDB且运行在浏览器环境中。
彩蛋: Machine Learning in Javascript

Burak Kanber 发布的一些列优秀博文中讲述了机器学习的基本原理。这些教程写的很好且专门面向JavaScript开发者。如果你想深入理解机器学习,这些博文是很好的学习资源。
结语
尽管JavaScript的机器学习生态尚未成熟,但仍然建议使用上述资源来开启你的机器学习之路并对一些核心技术建立感性认识。正如文章中展示的一些实验,你也可以仅使用浏览器和少量JavaScript代码来创建许多有趣的东西。
推荐阅读
【译】10个机器学习的JavaScript示例的更多相关文章
- JavaScript 示例
JavaScript 示例 <html lang="en"> <head> <meta charset="UTF-8"> & ...
- 10个最好的 JavaScript 动画库和开发框架
虽然 CSS3 动画功能能够让我们以简单轻松的方式实现动画效果,但是浏览器兼容性问题让人头疼.不过不用担心,我们还有另外的武器——JavaScript,它同样可以帮助你实现各种各样的动画效果,而且借助 ...
- 10个强大的Javascript表单验证插件推荐
创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...
- 10 个优秀的JavaScript开发框架
阅读目录 TouchStone.js Meteor Knockout Enyo.js Reactive-coffee ExtJS Aurajs Cappuccino canjs Feathersjs ...
- DOM&JavaScript示例&练习
以下示例均为html文件,保存至本地就可直接用浏览器打开以查看效果\(^o^)/~ 练习一:设置新闻字体 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...
- 10 种机器学习算法的要点(附 Python 和 R 代码)
本文由 伯乐在线 - Agatha 翻译,唐尤华 校稿.未经许可,禁止转载!英文出处:SUNIL RAY.欢迎加入翻译组. 前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关 ...
- Javascript -- 示例:多选下拉选框
1. 示例:多选下拉选框 <html> <head> <meta http-equiv="Content-Type" content="te ...
- 10 种机器学习算法的要点(附 Python)(转载)
一.前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明.更个性化的技术 也许我们生活在人类历史上最关键的时期:从使用 ...
- Spark 中的机器学习库及示例
MLlib 是 Spark 的机器学习库,旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib 由一些通用的学习算法和工具组成,包括分类.回归.聚类.协同过滤.降维等,同时还包括底层的优化 ...
随机推荐
- Android———最详细的系统对话框使用
在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它 ...
- Java基础总结--面向对象2
1.存在相关的多个方法就封装在一个类中,方法没调用到特有数据,需要静态化2.假如一个类所有方法都是静态方法,为了保证不被其他创建对象,可以将该类的构造方法私有化3.文档注释javadoc-按照规定注释 ...
- MongoDB索引限制
1. 额外开销: 每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作.所以,如果你很少对集合进行读取操作,建议不使用索引. 2. 内存使用: 由于索引是存储在内存(RAM)中 ...
- c++连接数据库 在vc6.0
配置相关环境 我的mysql安装路径为E:\mysql-5.5.28-win32所以要在VC中设置include路径和lib的路径. 添加MySql的include目录到VC工作台中Project-& ...
- Leetcode题解(七)
24.Swap Nodes in Pairs 题目 看到此题,第一想法是利用两个指针,分别将其所指向的节点的value交换.然后同时向后移动2个节点,代码如下: struct ListNode { i ...
- 补写:Best Coder #85 1001 Sum(前缀和)
sum Accepts: 640 Submissions: 1744 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/13107 ...
- windy数(数位DP)
windy数Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:165888KB 64bit I ...
- 【DG】利用闪回数据库(flashback)修复Failover后的DG环境
利用闪回数据库(flashback)修复Failover后的DG环境 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...
- Problem A: 求平均年龄
Description 定义一个Persons类,用于保存若干个人的姓名(string类型)和年龄(int类型),定义其方法 void addAPerson(string,int) 用于添加1个人的信 ...
- 14.javaweb AJAX技术详解
一.简介 1, ajax:在不重新加载网页的前提下,与服务器交换数据并更新部分网页的技巧,但其本身并不是一种新技术 2, 核心:XMLHttpRequest对象.AJAX技术主要是通过此对象完成的 ...
