在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用JavaScript來搭建一個神經網絡

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-09-03 08:51 ? 次閱讀

本文中作者為初學者解釋了如何使用 JavaScript 來搭建一個神經網絡。不用擔心,這不是一份深入介紹隱藏輸入層、激勵函數或如何使用 TensorFlow 的復雜教程,而是一次輕松實踐。即使你不懂神經網絡背后的深入內容,也可以完成這個簡單又有趣的實踐。

前言

機器學習對我來說是個特別的存在,讓我一次又一次覺得,“它實在太酷了,但我不確定接下來我是否會花幾個月的時間去學習線性代數和微積分。”

然而,同許多開發者一樣,我使用 JavaScript 比較得心應手,也會偶爾找一些用 JS 實現機器學習的例子,但卻看到大量文章和帖子控訴 JS 對機器學習來說是極其糟糕的語言,這也是不得不承認的一個事實。

但后來當我發現 Brain.js 時,我被打動了。為什么它被人忽略了這么久?!Brain.js 的文檔寫得非常清楚,而且易于學習。用了30分鐘的入門時間,然后我就搭建并訓練了一個神經網絡。如果你想直接去 Github 閱讀文檔,我們在文末給出了地址。

初體驗

關于接下來工作的主要步驟包括:

創建初始文件

確定你想讓神經網絡做的工作

搭建 Brain.js 并考慮好如何處理訓練數據和用戶輸入

收集訓練數據

運行神經網絡

評估結果

▌1.初始文件

創建一個新的目錄,然后添加一個 index.html 作為樣板文件。接下來創建三個 JS 文件:brain.js、training-data.js 和 script.js,當然,index.html 文件下面也需要引入這三個文件。

目前做這么多就足夠了。

現在我們來看看 Brain.js 的源代碼。將所有代碼復制并粘貼到你創建的空白 brain.js 文件中,然后點擊保存:4個文件中的2個就這樣完成了。

Brain.js 源代碼:

https://raw.githubusercontent.com/harthur-org/brain.js/master/browser.js

▌2. “我的目的是什么?”

接下來這個部分很有趣:決定你的機器要學習什么。你可以用這種方式解決不計其數的實際問題,如情感分析或圖像識別。我偶然想到一個機器學習應用,把文本作為輸入信息進行處理是很有趣的,因為你能隨處找到可用作訓練的數據,它們有很多潛在的應用場合,所以在這里我們要舉一個文本分類問題的例子:

判斷一條推文的作者是唐納德·特朗普還是金·卡戴珊。

這看起來可能不是個用處最廣的應用。雖然推文作者識別器還沒有強大的吸引點,但 Twitter 對機器學習來說真的是一座寶庫。一旦進行過訓練,我們的神經網絡就可以通過識別推文的內容模式,來辨別一條此前從未見過的推文是出自唐納德·特朗普還是金·卡戴珊。為了實現這個目的,我們需要提供盡可能多的訓練數據,把它們復制并粘貼到我們的 training-data.js 文件中,同時我們也可以試試自己是否能判斷一些推文的原作者。

▌3.設置 & 數據處理

現在我們還需做的工作就是在 script.js 文件中設置 Brain.js,并為我們的 training-data.js 文件提供一些訓練數據。但在此之前,讓我們先來看看這一切是如何運作的。

設置 Brain.js 是極其簡單的,我們在這里不會花費太多時間,但關于如何處理輸入數據格式的細節仍需要我們優先處理。我們先看一下文檔中的例子,很清晰地展示了這一過程:

1letnet=newbrain.NeuralNetwork(); 2 3 4net.train([ 5 6{ 7 8Input:{r:0.03,g:0.7,b:0.5}, 910Output:{black:1}1112},{1314Input:{r:0.16,g:0.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 有多易于使用。我們只需先將它實例化,然后進行訓練,最后運行,就是這么簡單。如果你將訓練數據嵌入文件內部,僅僅需要三行代碼,是不是很酷!

現在我們講一下數據的訓練。在上面的例子中,除了訓練數據的整體格式為input: {}, output: {},還有兩點需要注意。

第一,數據無需統一的長度。如上面代碼中的第11行,只傳入了 R 和 B 的值,而另兩條輸入傳入了 R、G 和 B 的值。同時,雖然上面的例子把對象作為輸入,值得一提的是你也可以使用數組。我之所以特別強調這一點,是因為我們會在該項目中傳入長度不等的數組。

第二,這些都不是有效的 RGB 值。如果你真的采用這些值,每一組都會呈現出黑色。這是因為要想讓 Brain.js 正常工作,輸入值必須在0和1之間。因此,為了能使其正常工作,每個顏色都需要進行處理(只需用一個函數將它除以255,即 RGB 的最大值)。接下來我們也需要做類似的工作。

3.1 編碼

因此,如果我們想讓神經網絡把推文(例如:字符串)作為輸入,我們需要用一個類似的函數將它們進行處理(即下面提到的encode()方法),它會把每個字符轉化為0和1之間的值,并存入數組中。幸運的是,JavaScript 有一個原生方法charCodeAt(),它可以將任何字符轉化成 ASCII 碼。所以我們會采取這種方式,把結果除以 EASCII 的最大值255,該操作可以保證我們得到的值均小于1。

3.2 處理訓練數據

我們會將訓練數據以純文本的形式進行存儲,而最終喂給 AI 的數據是編碼后的數據。因此我們需要另一個函數(即下面所說的processTrainingData()方法),該函數會對我們的訓練數據執行上文提到的編碼處理,有選擇地將文本轉化成編碼字符,然后返回可以完美配合 Brain.js 的訓練數據的數組。

那么到這兒的代碼如下(這部分代碼都將寫入 'script.js' 文件):

1lettrainedNet; 2 3 4 5functionencode(arg){ 6 7returnarg.split('').map(x=>(x.charCodeAt(0)/255)); 8 9}10111213functionprocessTrainingData(data){1415returndata.map(d=>{1617return{1819input:encode(d.input),2021output:d.output2223}2425})2627}28293031functiontrain(data){3233letnet=newbrain.NeuralNetwork();3435net.train(processTrainingData(data));3637trainedNet=net.toFunction();3839console.log('Finishedtraining...');4041};42434445functionexecute(input){4647letresults=trainedNet(encode(input));4849letoutput;5051results.trump>results.kardashian?output='Trump':output='Kardashian';5253returnoutput;5455}56575859train(trainingData);

這里要強調一個上述文檔例子中未涉及的函數,那就是train(),該函數可將訓練好的神經網絡存入全局變量trainedNet 中。這一操作便于我們每次使用神經網絡時無需重新訓練。一旦神經網絡被訓練好并存入變量中,我們就可以像調用函數一樣直接調用網絡,并將編碼后的數據傳入 AI 中(如上面execute() 函數中的第 45 行代碼)。

▌4.訓練

最后就是有關我們的訓練數據了。就像我在上面提到的,我們將推文存儲為文本的形式,然后緊接著把它們編碼成數值,這一操作可以讓你在復制粘貼訓練數據時方便很多。無需擔心格式問題,直接在文本中粘貼新的一行就好了。

1consttrainingData=[ 2 3{ 4 5input:"InsideChi'snursery", 6 7output:{kardashian:1} 8 9},{1011input:"WhyIdyedmyhairpink",1213output:{kardashian:1}1415},{1617input:"FeelingBlue(wearing@kkwbeautypowdercontourinmedium&darkcontourkitaseyeshadow,&anewlipcomingsoon)",1819output:{kardashian:1}2021},{2223input:"Iwillbeinterviewedby@JudgeJeanineon@FoxNewsat9:00P.M.Enjoy!",2425output:{trump:1}2627},{2829input:"DemMemo:FBIdidnotdisclosewhotheclientswere-theClintonCampaignandtheDNC.Wow!",3031output:{trump:1}3233},{3435input:"ThankyoutothegreatmenandwomenoftheUnitedStates@SecretServiceforajobwelldone!",3637output:{trump:1}3839}4041]

把這段代碼寫進 'training-data.js' 文件,我們就大功告成了!

注意:上面的代碼示例中,只展示了每個人的3條樣本,但實際上我分別引入了10條;我只是不想占用太多篇幅。當然,你提供的訓練數據量越大,神經網絡的精度也會越高,所以試著改變引入的數據量,來看看對結果有哪些影響吧。

▌5.執行

現在,就可以運行這個訓練好的神經網絡了。你只需在 'script.js' 文件的最下面加上一行調用execute() 的代碼,然后傳入一條特朗普或卡戴珊的推文;記得使用 console.log。這里有一則卡戴珊的推文,這條推文不在我的訓練數據中:

1console.log(execute("Thesearen'treal.KanyewouldneverwriteYeezyontheside"));

接下來在本地打開你的 index.html 頁面,查看控制臺:

就是這樣,神經網絡正確辨別了一條之前從未見過的、來自卡戴珊的推文,確定度達到了80%.

現在我們再用一條特朗普的推文試試:

1console.log(execute("WhetherweareRepublicanorDemocrat,wemustnowfocusonstrengtheningBackgroundChecks!"));

結果如下:

▌6.評估

現在你已經有一個可以訓練任何文本的神經網絡了!你可以使用它輕松辨別一封郵件或公司在線評價的情感及態度,識別垃圾郵件,將博客文章分類,判別一則消息是否緊急等等,這一點非常有趣,這個神經網絡可以用在很多類似根據所寫內容判斷作者的任務中。

即使你不想另外創建一個由機器學習驅動的全新工具,這次實踐對你來說也是一份寶貴的開發經驗。也許什么時候它將會派上用場,甚至可能在未來為你開拓新的機遇。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4773

    瀏覽量

    100880
  • javascript
    +關注

    關注

    0

    文章

    519

    瀏覽量

    53888
  • 機器學習
    +關注

    關注

    66

    文章

    8423

    瀏覽量

    132757

原文標題:用JavaScript創建神經網絡的有趣教程,一定要讓你知道!

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    人工神經網絡原理及下載

    這個網絡輸入和相應的輸出來“訓練”這個網絡網絡根據輸入和輸出不斷地調節自己的各節點之間的權值滿足輸入和輸出。這樣,當訓練結束后,我們給定
    發表于 06-19 14:40

    【PYNQ-Z2試用體驗】神經網絡基礎知識

    神經網絡的計算。對于多層多節點的神經網絡,我們可以使用矩陣乘法表示。在上面的神經網絡中,我們將權重作為
    發表于 03-03 22:10

    【案例分享】ART神經網絡與SOM神經網絡

    今天學習了兩神經網絡,分別是自適應諧振(ART)神經網絡與自組織映射(SOM)神經網絡。整體感覺不是很難,只不過些最基礎的概念容易理解不
    發表于 07-21 04:30

    如何構建神經網絡

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡種基于現有數據創建預測的計算系統。如何構建神經網絡神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反
    發表于 07-12 08:02

    基于BP神經網絡的PID控制

    最近在學習電機的智能控制,上周學習了基于單神經元的PID控制,這周研究基于BP神經網絡的PID控制。神經網絡具有任意非線性表達能力,可以通過對系統性能的學習實現具有最佳組合的PID控
    發表于 09-07 07:43

    如何使用Keras框架搭建小型的神經網絡多層感知器

    本文介紹了如何使用Keras框架,搭建小型的神經網絡-多層感知器,并通過給定數據進行計算訓練,最好將訓練得到的模型提取出參數,放在51單片機上進行運行。
    發表于 11-22 07:00

    輕量化神經網絡的相關資料下載

    視覺任務中,并取得了巨大成功。然而,由于存儲空間和功耗的限制,神經網絡模型在嵌入式設備上的存儲與計算仍然是巨大的挑戰。前面幾篇介紹了如何在嵌入式AI芯片上部署神經網絡:【嵌入式AI
    發表于 12-14 07:35

    卷積神經網絡維卷積的處理過程

    inference在設備端上做。嵌入式設備的特點是算力不強、memory小。可以通過對神經網絡做量化降load和省memory,但有時可能memory還吃緊,就需要對神經網絡在memory使用上做進
    發表于 12-23 06:16

    JavaScript 實現神經網絡應用教程

    近日,來自德國的 Robin Wieruch 發布了系列使用 JavaScript 構建機器學習的教程,本文將主要介紹使用 JavaScript 實現神經網絡的方法。
    發表于 12-08 09:21 ?5836次閱讀

    如何使用numpy搭建卷積神經網絡詳細方法和程序概述

    內容將繼續秉承之前 DNN 的學習路線,在利用Tensorflow搭建神經網絡之前,先嘗試利用numpy手動搭建卷積神經網絡,以期對卷積神經網絡
    的頭像 發表于 10-20 10:55 ?6078次閱讀

    用Python從頭實現神經網絡理解神經網絡的原理1

    事情可能會讓初學者驚訝:神經網絡模型并不復雜!『神經網絡』這個詞讓人覺得很高大上,但實際上神經網絡算法要比人們想象的簡單。 這篇文章完全是為新手準備的。我們會通過用Pytho
    的頭像 發表于 02-27 15:05 ?706次閱讀
    用Python從頭實現<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>神經網絡</b><b class='flag-5'>來</b>理解<b class='flag-5'>神經網絡</b>的原理1

    用Python從頭實現神經網絡理解神經網絡的原理2

    事情可能會讓初學者驚訝:神經網絡模型并不復雜!『神經網絡』這個詞讓人覺得很高大上,但實際上神經網絡算法要比人們想象的簡單。 這篇文章完全是為新手準備的。我們會通過用Pytho
    的頭像 發表于 02-27 15:06 ?634次閱讀
    用Python從頭實現<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>神經網絡</b><b class='flag-5'>來</b>理解<b class='flag-5'>神經網絡</b>的原理2

    用Python從頭實現神經網絡理解神經網絡的原理3

    事情可能會讓初學者驚訝:神經網絡模型并不復雜!『神經網絡』這個詞讓人覺得很高大上,但實際上神經網絡算法要比人們想象的簡單。 這篇文章完全是為新手準備的。我們會通過用Pytho
    的頭像 發表于 02-27 15:06 ?740次閱讀
    用Python從頭實現<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>神經網絡</b><b class='flag-5'>來</b>理解<b class='flag-5'>神經網絡</b>的原理3

    用Python從頭實現神經網絡理解神經網絡的原理4

    事情可能會讓初學者驚訝:神經網絡模型并不復雜!『神經網絡』這個詞讓人覺得很高大上,但實際上神經網絡算法要比人們想象的簡單。 這篇文章完全是為新手準備的。我們會通過用Pytho
    的頭像 發表于 02-27 15:06 ?700次閱讀
    用Python從頭實現<b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>神經網絡</b><b class='flag-5'>來</b>理解<b class='flag-5'>神經網絡</b>的原理4

    卷積神經網絡模型搭建

    卷積神經網絡模型搭建 卷積神經網絡模型是種深度學習算法。它已經成為了計算機視覺和自然語言處理等各種領域的主流算法,具有很大的應用前景。本篇文章將詳細介紹卷積
    的頭像 發表于 08-21 17:11 ?972次閱讀
    主站蜘蛛池模板: 免费无码看av的网站| a级毛片网| 欧美一区视频| 热re99久久精品国产99热| 午夜a视频| 午夜黄视频| 丁香欧美| 久久99热久久精品| 在线亚洲一区二区| 俺要操| 三级成人网| 看片国产| 国产视频黄| 韩国美女丝袜一区二区| 性久久久久| 在线黄色免费| 五月婷婷开心综合| 人人草97| 欧美在线1| 三区在线观看| 午夜伦理在线观看| 三级理论片| 狠狠色影院| 九九涩| 94在线| 久久久精品免费热线观看| 久久成人福利视频| 开心激情五月婷婷| 国产精品成人aaaaa网站| 四虎看黄| 色激情网| 日韩a级毛片| 日韩不卡毛片| 韩国成人毛片aaa黄| 天天视频入口| 激情综合丝袜美女一区二区| 高h污快穿文汁水四溅| 色多多www视频在线观看免费| 红色一级毛片| 奇米小说| 色偷偷亚洲综合网亚洲|