欢迎来到天天文库
浏览记录
ID:27873935
大小:140.50 KB
页数:9页
时间:2018-12-06
《如何使用JavaScript来搭建一个神经网络.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、如何使用JavaScript来搭建一个神经网络 本文中作者为初学者解释了如何使用JavaScript来搭建一个神经网络。不用担心,这不是一份深入介绍隐藏输入层、激励函数或如何使用TensorFlow的复杂教程,而是一次轻松实践。即使你不懂神经网络背后的深入内容,也可以完成这个简单又有趣的实践。 前言 机器学习对我来说是个特别的存在,让我一次又一次觉得,“它实在太酷了,但我不确定接下来我是否会花几个月的时间去学习线性代数和微积分。” 然而,同许多开发者一样,我使用JavaScript比较得心应手,也会
2、偶尔找一些用JS实现机器学习的例子,但却看到大量文章和帖子控诉JS对机器学习来说是极其糟糕的语言,这也是不得不承认的一个事实。 但后来当我发现Brain.js时,我被打动了。为什么它被人忽略了这么久?!Brain.js的文档写得非常清楚,而且易于学习。用了30分钟的入门时间,然后我就搭建并训练了一个神经网络。如果你想直接去Github阅读文档,我们在文末给出了地址。 初体验 关于接下来工作的主要步骤包括: 创建初始文件 确定你想让神经网络做的工作 搭建Brain.js并考虑好如何处理训练数据和用
3、户输入 收集训练数据 运行神经网络 评估结果 ▌1.初始文件 创建一个新的目录,然后添加一个index.html作为样板文件。接下来创建三个JS文件:brain.js、training-data.js和script.js,当然,index.html文件下面也需要引入这三个文件。 目前做这么多就足够了。 现在我们来看看Brain.js的源代码。将所有代码复制并粘贴到你创建的空白brain.js文件中,然后点击保存:4个文件中的2个就这样完成了。 Brain.js源代码: https://
4、raw.githubusercontent.com/harthur-org/brain.js/master/browser.js ▌2.“我的目的是什么?” 接下来这个部分很有趣:决定你的机器要学习什么。你可以用这种方式解决不计其数的实际问题,如情感分析或图像识别。我偶然想到一个机器学习应用,把文本作为输入信息进行处理是很有趣的,因为你能随处找到可用作训练的数据,它们有很多潜在的应用场合,所以在这里我们要举一个文本分类问题的例子: 判断一条推文的作者是唐纳德·特朗普还是金·卡戴珊。 这看起来可能不是
5、个用处最广的应用。虽然推文作者识别器还没有强大的吸引点,但Twitter对机器学习来说真的是一座宝库。一旦进行过训练,我们的神经网络就可以通过识别推文的内容模式,来辨别一条此前从未见过的推文是出自唐纳德·特朗普还是金·卡戴珊。为了实现这个目的,我们需要提供尽可能多的训练数据,把它们复制并粘贴到我们的training-data.js文件中,同时我们也可以试试自己是否能判断一些推文的原作者。 ▌3.设置&数据处理 现在我们还需做的工作就是在script.js文件中设置Brain.js,并为我们的traini
6、ng-data.js文件提供一些训练数据。但在此之前,让我们先来看看这一切是如何运作的。 设置Brain.js是极其简单的,我们在这里不会花费太多时间,但关于如何处理输入数据格式的细节仍需要我们优先处理。我们先看一下文档中的例子,很清晰地展示了这一过程: 1letnet=newbrain.NeuralNetwork();234net.train([56{78Input:{r:0.03,g:0.7,b:0.5},910Output:{black:1}1112},{1314Input:{r:0.16,g:0
7、.09,b:0.2},1516Output:{black:1}1718},{1920Input:{r:0.5,b:0.5},2122Output:{black:1}2324}2526]);27282930letoutput=net.run({r:1,g:0.4,b:0}); 首先,上面的例子是一个可以正常运行的AI(它会查看给定的颜色,然后告诉你在该颜色上黑色文本和白色文本哪个更易于辨认)。希望可以借此体现Brain.js有多易于使用。我们只需先将它实例化,然后进行训练,最后运行,就是这么简单。如果你将训
8、练数据嵌入文件内部,仅仅需要三行代码,是不是很酷! 现在我们讲一下数据的训练。在上面的例子中,除了训练数据的整体格式为input:{},output:{},还有两点需要注意。 第一,数据无需统一的长度。如上面代码中的第11行,只传入了R和B的值,而另两条输入传入了R、G和B的值。同时,虽然上面的例子把对象作为输入,值得一提的是你也可以使用数组。我之所以特别强调这一点,是因为我们会在该项目中传入长度不等的数组。
此文档下载收益归作者所有