當前位置:
首頁 > 最新 > 還差一步之學習神經網路

還差一步之學習神經網路

上次提到了AlphaGo演算法就是蒙特卡洛樹搜索+神經網路,不服輸的陽傻為了戰勝元寶開始了神經網路的自學之路。。。

本次教程中元寶將會介紹神經網路中最基本的一個模型LeNet。本次教程的目的並不是為了讓大家深入的學習神經網路,而是給從沒有接觸過Pytorch環境以及神經網路的人提供一個上手的小例子。

代碼可以從下面地方下載:

這個LeNet在後天的教程中將會成為五子棋AlphaGo演算法中的神經網路部分。

接下來將會介紹:

如何安裝pytorch

MNIST

MNINST是LeCun提供的一個手寫數字數據集。Pytorch提供了下載以及使用MNIST的介面,但為了給大家看到機器學習的底層步驟,在這裡元寶

只是用pytorch來下載數據集,然後把它轉化成常用的numpy來手動來處理MNIST數據。

如何手寫一個神經網路

LeNet由2個卷積層與3個全連接層組成,下面的代碼copy自pytorch的官網教程。

通常來說在一個神經網路的class里,init函數中會定義這個神經網路用到的全部組件,比如conv1, conv2, fc1, fc2, fc3。 在forward函數中來定義網路結構比如這裡是兩層卷積,三層全連接。

訓練模型

在機器學習中經常會用到mini-bach,它的意思是我們每次隨機的取batch_size個數據一起訓練。這樣子局部的取平均可以加速我們的訓練。下面是我手寫的一個隨機取batch_size個數據的過程。它通過函數隨機的取得一個樣本,並把它加入到中。每當我們有batch_size個數據,我們調用函數來訓練這些數據。

注意到其中我們使用了一個函數,這個通知模型我們要開始訓練了,在使用dropout和batch_normalization中這一步是關鍵的。由於LeNet中並沒有dropout和batch_normalization所以這一步不是很關鍵,但這種書寫方式是一種良好的Pytorch習慣。

接下來的函數會幫助我們訓練一個batch的數據。

訓練過程由四部分組成:

檢驗模型

為了檢驗模型只要在驗證數據集上跑一邊就可以啦,很簡單的。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

TAG:全球大搜羅 |