成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

30行JavaScript代碼,教你分分鐘創建神經網絡

人工智能 深度學習 前端
今天我們要講的例子是一個非常簡單的神經網絡,我們將用它來學習邏輯異或方程(XOR equation)。同時,我也在Scrimba上創建了一個交互式屏幕錄像。

[[203712]]

自己搭建神經網絡太復雜?

[[203713]] 

別怕!

今天我們將手把手教你如何用30行代碼輕松創建一個神經網絡[[203714]]。 

在本篇文章中,你將學到: 

如何使用Synaptic.js(https://synaptic.juancazala.com/#/)創建和訓練神經網絡。

利用這款工具,我們可以在瀏覽器中用Node.js進行深度學習。

今天我們要講的例子是一個非常簡單的神經網絡,我們將用它來學習邏輯異或方程(XOR equation)。

同時,我也在Scrimba上創建了一個交互式屏幕錄像。你也可以通過觀看視頻來學習本教程。(https://scrimba.com/casts/cast-1980)

在開始編程之前,讓我們先快速瀏覽神經網絡的一些基本概念。

神經元和突觸

神經網絡的***個模塊,是神經元。

神經元類似一個函數,你輸入一些值,它就會輸出返回值。

神經元有各種不同的類型。我們的神經網絡將用到sigmoid神經元(https://en.wikipedia.org/wiki/Sigmoid_function),將任何輸入的給定值,壓縮到0到1之間。

下圖中的圓圈就代表一個sigmoid神經元。它的輸入值是5,輸出值是1。箭頭則代表的是神經元的突觸,用來連接神經網絡中其它層的神經元。

 

為什么會有一個紅色的數字5呢?它是連接到神經元的三個突觸(左邊3個箭頭)的值之和。

在最左邊,我們看到有兩個值與所謂的偏差值進行了加法運算。數值1和0是綠色的,而偏差值-2是棕色的。

首先,兩個輸入值與他們的權重分別相乘,權重就是藍色數字7和3。

然后,我們把他們和偏差值加起來,所得的結果是5,對應紅色數字。這個紅色數字就是我們人工神經元的輸入值。

 

由于我們的神經元是sigmoid神經元,它會將任何值壓縮到0到1的區間范圍內,所以輸出值被壓縮到1。

如果將這些神經元的網絡連接起來,就形成了一個神經網絡。通過神經元間的突觸連接,從輸入到輸出進行正向傳播。如下圖所示:

 

 

神經網絡的目標是訓練其泛化能力,例如識別手寫的數字或者垃圾郵件。做到好的泛化重要的是通過神經網絡找到合適的權重和偏差值。如上述例子中的藍色和棕色數字。

當訓練神經網絡時,我們只需要加載大量示例數據,如手寫的數字,然后讓神經網絡來預測正確的數字。

在每次預測后,你需要計算預測的偏差程度,然后調整權重和偏差值使得神經網絡在下一次運算中可以預測的更加準確。這種學習過程被稱為反向傳播。如此重復上千次,你的神經網絡很快會精于泛化。

本教程不包括反向傳播的工作原理介紹,但是我找到了3個好的教程幫助大家理解:

  • 分步介紹反向傳播案例(https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/) – 作者:Matt Mazur
  • 神經網路駭客指南(http://karpathy.github.io/neuralnets/) – 作者:Andrej Karpathy
  • 神經網絡和深度學習(http://neuralnetworksanddeeplearning.com/chap1.html) – 作者:Michael Nielsen

用代碼搭建神經網絡

現在,你應該已經對神經網絡有了基礎概念,那就讓我們進入代碼部分吧。

1.創建神經網絡層

在synaptic中我們使用new layer()函數來創建。函數中傳遞的數字表示的是每一層會有多少個神經元。

 

接下來我們將這些層進行連接并實例化一個神經網絡,代碼如下,

 

這是一個2-3-1結構的神經網絡,可視化表示如下:

 

2.訓練神經網絡

 

我們共進行了20,000次的訓練,每一次都進行四次正向傳播和反向傳播運算,分別傳遞四個可能的輸入到神經網絡:[0,0] [0,1] [1,0] [1,1] 。

我們從myNetwork.activate([0,0])激活函數開始,[0,0]是神經網絡的輸入值,這個過程是正向傳播,也被稱為激活網絡。在每一次正向傳播后我們需要做一次反向傳播,從而更新神經網絡的權重和偏差值。

反向傳播通過下面這行代碼實現

  1. myNetwork.propagate(learningRate, [0]) 

learningRate是一個常數,用來告訴神經網絡每次應該對權重值進行多大程度的調整。第二個參數0表示的是當輸入為[0,0]時,正確的輸出參數是0.

然后,神經網絡將預測值和真實值進行對比,來判斷預測是否正確。

它將比較的結果作為調整權重和偏差值的基礎,以便下次的預測可以更加準確。

在執行這個過程20,000次后,我們可以通過傳遞四個可能的輸入到激活網絡,從而判斷目前神經網絡的預測情況:

 

如果我們將這些值四舍五入到最近的整數,就將得到異或方程的正確結果。萬歲!

[[203719]] 

以上就是教程的全部內容了。 

雖然我們只了解了神經網絡的皮毛,但這已經足夠支持你開始使用Synaptic,并繼續學習。另外,Synaptic的wiki中有很多好的教程,你可以點擊以下鏈接瀏覽(https://github.com/cazala/synaptic/wiki)。 

責任編輯:龐桂玉 來源: 大數據文摘
相關推薦

2017-09-18 08:08:33

JavaScript神經網絡代碼

2017-08-29 09:40:26

JavaScript代碼神經網絡

2019-07-25 08:20:37

代碼開發神經網絡

2019-05-05 09:46:01

Python代碼神經網絡

2018-12-10 10:00:06

Python神經網絡編程語言

2020-04-20 13:45:32

神經網絡模型代碼

2019-10-28 08:00:00

Keras神經網絡人工智能

2016-09-04 15:42:03

Linux虛擬集群

2023-10-29 18:08:33

GPU神經網絡CPU

2018-07-03 16:10:04

神經網絡生物神經網絡人工神經網絡

2014-05-15 16:00:11

Xcode 5項目清潔

2020-03-16 10:16:19

代碼開發工具

2014-07-18 14:03:06

Android高效編寫代碼

2021-03-23 09:06:34

下載神器文件下載插件

2015-12-22 11:48:50

javascript閉包

2018-03-21 10:14:38

JavaScript交叉GPU

2018-01-24 10:48:34

神經網絡深度學習前端

2017-09-10 07:07:32

神經網絡數據集可視化

2025-02-25 14:13:31

2023-03-07 18:55:05

代碼機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人综合一区二区三区 | 欧美精品一区二区在线观看 | 亚洲 欧美 综合 | 婷婷中文字幕 | 超碰在线观看97 | 98成人网| 伊人热久久 | 综合五月 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产视频精品在线观看 | 影音先锋欧美资源 | 一区二区三区国产 | 亚洲欧美少妇 | 久久久精 | 91porn成人精品 | 激情91 | av网站在线看 | 国产日韩免费观看 | 91精品国产91久久综合桃花 | 久久一区视频 | 国产一区二区三区四区三区四 | 国产精品18hdxxxⅹ在线 | a级黄色网 | 中文在线一区二区 | 美女天天操 | 亚洲人人| 精品久久久久久久久久久久 | 色资源在线视频 | 中文字幕二区 | 久久久久久久久久久91 | 久久久久无码国产精品一区 | 91视频入口| 日韩在线精品视频 | 在线国产小视频 | 久久国产精品网站 | 一区二区三区精品在线视频 | 亚洲国产情侣 | 久久久免费少妇高潮毛片 | 夜操 | 天天操一操 | 99久久精品一区二区成人 |