你的計算機也可以看懂世界——十分鍾跑起卷積神經網絡(Windows+CPU)


眾所周知,如果你想研究Deep Learning,那么比較常用的配置是Linux+GPU,不過現在很多非計算機專業的同學有時也會想采用Deep Learning方法來完成一些工作,那么Linux+GPU的環境就有可能會給他們帶來一定困擾,我寫這篇文章就是為了讓這些同學可以不用去裝Linux系統,不用去涉及GPU,就可以基於Caffe框架跑出一個簡單的神經網絡。

 

CNN基礎知識:https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit(沒基礎的還應該另外了解一些神經網絡算法的基礎知識,例如前饋傳遞,BP算法等,有基礎的也推薦再通過這個鏈接鞏固一番,以下的文章會假設你對於CNN有比較全面和扎實的理解)

所需系統環境:windows7 sp1及以上系統,win7 sp1以下的會不會有什么錯誤我不知道,對了,是64位系統哦~

其他環境:Visual Studio 2013,cygwin 2.871(其他版本應該也可以,主要是用來在windows系統上模擬一個非常簡易的linux環境,因為應用上只會用到一些很基礎的命令,所以早一點的版本也無所謂)

Windows版Caffe框架:https://github.com/Microsoft/caffe

首先,需要將windows版本的Caffe框架下載到本地,隨便下到哪都行,然后隨便解壓縮到哪都行,我解壓完之后,Caffe框架的根目錄就是H:\caffe-master\caffe-master。解壓完之后,我們可以很明顯地發現,這個框架還是一塊未編譯的“生肉”,是不能直接使用的,所以我們需要利用VS2013對其進行編譯,但是在此之前,還有一個步驟,因為我們是小窮逼,我們沒有動輒上萬的GPU,但是賈大神所在的土豪實驗室有用不完的GPU,所以這里默認的還是GPU模式的框架,我們需要對這一點進行修改,具體方式就是修改根目錄中windows文件夾中的CommonSettings.props.example文件,具體修改方式是:

一、將該文件重命名為CommonSettings.props;

二、將該文件中的

<CpuOnlyBuild>false</CpuOnlyBuild>
<UseCuDNN>true</UseCuDNN>

改為

<CpuOnlyBuild>true</CpuOnlyBuild>
<UseCuDNN>false</UseCuDNN>

至於這里面的CuDNN是什么,之后會提到,現在先不用了解~

三、保存該文件。

在將框架改為CPU模式之后,就可以雙擊打開windows文件夾中的Caffe.sln文件,然后在VS2013中點擊最上方的生成->重新生成解決方案即可,需要注意的是,進行這一步之前最好將Debug模式改成Release,就像這樣。

經過一段時間的編譯,在VS2013下端的顯示台上會顯示生成成功的信息,這時候這個框架就編譯完成了,而生成的可執行文件caffe.exe的位置在根目錄中的Build\x64\Release之中,同時還會生成一大堆的依賴包和各類庫,這里各位先不用在意,今天的任務主要會和caffe.exe發生接觸。

編譯好了框架之后,可以說是萬事俱備,只欠數據集和網絡模型了,在第一次的嘗試中,CSDN的卜居大神所推崇的使用Yann LeCun大神(我習慣於說成楊樂村大神)提出的LeNet-5網絡模型來進行對MNIST數據集的學習是非常適合的。

MNIST數據集是一個手寫數字的數據庫,所以可想而知,這次訓練的目的是讓你的計算機學會“看懂數字”。

MNIST數據集在哪里獲取呢?Caffe框架已經為你想到了這一點,所以在H:\caffe-master\caffe-master\data\mnist中的get_mnist.sh腳本就是用來幫你下載這個數據集的,理論上,這個腳本的運行需要Linux的環境支持,但是我們現在用的是windows環境,怎么辦呢?很簡單,還記得之前所說的cygwin嗎?沒錯,就用它!有關cygwin的安裝和配置可以看看這個http://www.cygwin.cn/site/install/。

現在,你已經安裝好了cygwin,並已經將其雙擊打開,只需要在這個黑框框里如下輸入,然后回車,就會為你自動下載MNIST數據集(注意,如果不翻牆是沒有辦法下載的,推薦一下我一直用的Psiphon3,這個名字一搜就能搜到,你們懂的)。

 

(忽略我的電腦名字是Celia,用的實驗室的機器,懶得改了。。。)

這時候,你會發現在data\mnist文件夾中出現了

 

,也就是說,MNIST數據集已經成功地下載下來了。

那么這個數據集是不是可以直接用了呢?答案是不能。為什么呢?因為到這一步為止,我們的數據集還只是二進制文件,需要轉換為lmdb文件才可以被Caffe框架識別,所以這其中還有一個轉換的過程,對於windows用戶來說,這個轉換是比較煩的,以至於我自己也沒有試過,但是由於我之前一直在Ubuntu系統中使用這個框架,所以我們可以采用如下的兩種方法:

一、在Ubuntu系統中,首先cd進Caffe框架的根目錄,之后只需通過簡單的一行命令:

./examples/mnist/create_mnist.sh

即可完成數據的轉換工作,那么因為這里我們不希望去使用Ubuntu,所以我比較推薦第二種方法。

二、去網上找資源。。。MNIST數據集的lmdb文件在網上是容易找到的,這里我也用我的網盤分享了一份,http://pan.baidu.com/s/1o86O7Xo。

假設你是從我的網盤下載的,那么現在只需要把這個下載下來的文件解壓,然后把解壓出來的mnist_train_lmdb以及mnist_test_lmdb文件夾放到examples/mnist中即可。

至於我們使用的LeNet-5模型,眼尖的同學應該已經發現了,早就已經存在於examples/mnist文件夾中了。

現在,我們有了框架,有了數據集,有了模型,那么就快要大功告成了。接下來,只需要在windows自帶的cmd命令行界面中如下輸入:

 

之后按下回車,就大功告成啦,只需在黑框框中不斷跳文字的過程中靜靜地等待即可。。。這個訓練時間主要和你的計算機的配置有關,訓練完成時的狀態是這樣的:

 

可以看到,最終的正確率達到了驚人的99.09%,而損失也降到了0.026495。通過訓練之后生成的權重也保存在了mnist文件夾中的lenet_iter_10000.caffemodel之中。這時候,我們可以通過訓練好的模型來對測試集進行測試。測試所需代碼如下:

 

最后,我們可以發現這個模型在測試集上的正確率達到了非常驚人的程度。

 

這樣,我們就可以說,你的計算機上成功地誕生了神經網絡,而你的計算機同時也成功學會了“認識數字”。

 

備注:本人非常樂意分享我的文章,轉載請注明我的博客地址:http://www.cnblogs.com/matthewli/與原文地址:http://www.cnblogs.com/matthewli/p/6048907.html,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM