導航:首頁 > 編程語言 > 9行代碼10億

9行代碼10億

發布時間:2023-07-03 01:48:52

『壹』 如何用9行Python代碼編寫一個簡易神經網路

學習人工智慧時,我給自己定了一個目標--用Python寫一個簡單的神經網路。為了確保真得理解它,我要求自己不使用任何神經網路庫,從頭寫起。多虧了Andrew Trask寫得一篇精彩的博客,我做到了!下面貼出那九行代碼:在這篇文章中,我將解釋我是如何做得,以便你可以寫出你自己的。我將會提供一個長點的但是更完美的源代碼。

首先,神經網路是什麼?人腦由幾千億由突觸相互連接的細胞(神經元)組成。突觸傳入足夠的興奮就會引起神經元的興奮。這個過程被稱為「思考」。我們可以在計算機上寫一個神經網路來模擬這個過程。不需要在生物分子水平模擬人腦,只需模擬更高層級的規則。我們使用矩陣(二維數據表格)這一數學工具,並且為了簡單明了,只模擬一個有3個輸入和一個輸出的神經元。

我們將訓練神經元解決下面的問題。前四個例子被稱作訓練集。你發現規律了嗎?『?』是0還是1?你可能發現了,輸出總是等於輸入中最左列的值。所以『?』應該是1。

訓練過程

但是如何使我們的神經元回答正確呢?賦予每個輸入一個權重,可以是一個正的或負的數字。擁有較大正(或負)權重的輸入將決定神經元的輸出。首先設置每個權重的初始值為一個隨機數字,然後開始訓練過程:

取一個訓練樣本的輸入,使用權重調整它們,通過一個特殊的公式計算神經元的輸出。

計算誤差,即神經元的輸出與訓練樣本中的期待輸出之間的差值。

根據誤差略微地調整權重。

重復這個過程1萬次。最終權重將會變為符合訓練集的一個最優解。如果使用神經元考慮這種規律的一個新情形,它將會給出一個很棒的預測。

這個過程就是back propagation。

計算神經元輸出的公式

你可能會想,計算神經元輸出的公式是什麼?首先,計算神經元輸入的加權和,即接著使之規范化,結果在0,1之間。為此使用一個數學函數--Sigmoid函數:Sigmoid函數的圖形是一條「S」狀的曲線。把第一個方程代入第二個,計算神經元輸出的最終公式為:你可能注意到了,為了簡單,我們沒有引入最低興奮閾值。

調整權重的公式

我們在訓練時不斷調整權重。但是怎麼調整呢?可以使用「Error Weighted Derivative」公式:為什麼使用這個公式?首先,我們想使調整和誤差的大小成比例。其次,乘以輸入(0或1),如果輸入是0,權重就不會調整。最後,乘以Sigmoid曲線的斜率(圖4)。為了理解最後一條,考慮這些:

我們使用Sigmoid曲線計算神經元的輸出

如果輸出是一個大的正(或負)數,這意味著神經元採用這種(或另一種)方式

從圖四可以看出,在較大數值處,Sigmoid曲線斜率小

如果神經元認為當前權重是正確的,就不會對它進行很大調整。乘以Sigmoid曲線斜率便可以實現這一點

Sigmoid曲線的斜率可以通過求導得到:把第二個等式代入第一個等式里,得到調整權重的最終公式:當然有其他公式,它們可以使神經元學習得更快,但是這個公式的優點是非常簡單。

構造Python代碼

雖然我們沒有使用神經網路庫,但是將導入Python數學庫numpy里的4個方法。分別是:

exp--自然指數

array--創建矩陣

dot--進行矩陣乘法

random--產生隨機數

比如, 我們可以使用array()方法表示前面展示的訓練集:「.T」方法用於矩陣轉置(行變列)。所以,計算機這樣存儲數字:我覺得我們可以開始構建更優美的源代碼了。給出這個源代碼後,我會做一個總結。

我對每一行源代碼都添加了注釋來解釋所有內容。注意在每次迭代時,我們同時處理所有訓練集數據。所以變數都是矩陣(二維數據表格)。下面是一個用Python寫地完整的示例代碼。

我們做到了!我們用Python構建了一個簡單的神經網路!

首先神經網路對自己賦予隨機權重,然後使用訓練集訓練自己。接著,它考慮一種新的情形[1, 0, 0]並且預測了0.99993704。正確答案是1。非常接近!

傳統計算機程序通常不會學習。而神經網路卻能自己學習,適應並對新情形做出反應,這是多麼神奇,就像人類一樣。

『貳』 linux操作系統源代碼有多少行

Linux用來支持各種體系結構的源代碼包含大約4500個C語言程序,存放在270個左右的子目錄下,總共內大約包含200萬行容代碼,大概佔用58MB磁碟空間。
Linux用來支持各種體系結構的源代碼包含大約4500個C語言程序,存放在270個左右的子目錄下,總共大約包含200萬行代碼,大概佔用58MB磁碟空間。
源代碼所有在目錄:/usr/src/linux源代碼所有在目錄:/usr/src/linux。

閱讀全文

與9行代碼10億相關的資料

熱點內容
5g網路什麼時候普及河北邢台 瀏覽:709
編程和運營哪個更適合創業 瀏覽:893
尤里x怎麼升級 瀏覽:399
做業務績效考核需要哪些數據 瀏覽:433
dnf85版本劍魔刷圖加點 瀏覽:407
手機硬碟測試架可以讀取哪些數據 瀏覽:704
ug前後處理結算結果找不到文件 瀏覽:769
網頁框架拆分代碼 瀏覽:382
未來十年網路安全有什麼影響 瀏覽:362
win10更新後進不了劍靈 瀏覽:243
iphone471激活出錯 瀏覽:648
怎麼把文件拷到u盤 瀏覽:620
中伊簽署文件視頻 瀏覽:661
電信光寬頻網路不穩定 瀏覽:504
網路崗軟路由 瀏覽:995
黑莓z10在哪裡下載app 瀏覽:310
net批量下載文件 瀏覽:696
怎麼把蘋果一體機文件拷貝 瀏覽:117
sql文件怎麼寫 瀏覽:9
帝豪ec718導航升級 瀏覽:257

友情鏈接