你的電腦也可以看懂世界(一)——十分鐘跑起卷積神經網路(Windows+CPU)

來源:互聯網
上載者:User

標籤:網路模型   ase   裝置   知識   解壓縮   install   為我   電腦   版本   

學習、使用卷積神經網路已經挺久了,期間一直在基於賈揚清大神的Caffe架構來研究別人的模型,抑或是在無聊的時候以近似於算命一樣的方式,眼睛微閉,搖頭晃腦,口中不時漏出幾個音節,半晌便DIY出一個自認為改進頗多的模型,然後去跑一下,當然結果是非常慘淡的(要不然我就直接發論文了哪有這麼閑還來寫部落格。。。),從這個過程中,我深刻地體會到了“前人栽樹後人乘涼”這句話的正確性,雖然賈大神這個前人也不比我等大上幾歲。今天聽說賈大神宣布了最新的可以在行動裝置上進行訓練和測試的Caffe架構,心想我知道的這點東西可能很快就要過時了,同時也考慮到一直想開一個部落格裝裝逼,所以就把最近的所學所思拿上來寫一寫,爭取能寫到我堅持寫完一個比較簡陋的CNN架構,因為才疏學淺,我的希望僅僅是能讓非電腦專業的同學能學會用這個架構,然後或許能寫一個屬於自己的非常簡陋的架構,我邊學邊寫,您邊看邊吐槽就行。

這個系列的第一篇文章主要是想從應用程式層面去大致地介紹一下這個偉大的架構,和別的一些教程不同,我所介紹的這一種應用方法不需要Linux,不需要GPU(這樣會慢一點,不過還是先跑起來再考慮怎麼最佳化咯,重要的是這樣會便宜一點),僅需要windows系統以及CPU即可,是真正的十分鐘跑起卷積神經網路,我在剛接觸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資料集(注意,如果不FQ是沒有辦法下載的,推薦一下我一直用的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之中。這時候,我們可以通過訓練好的模型來對測試集進行測試。測試所需代碼如下:

 

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

 

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

以上,就是這一次我所要說的東西,上面提到很多次各不一樣的命令列,那麼這些命令列代表的是什麼含義呢,命令列所引用到的各種檔案分別有什麼意義呢,caffe.exe的使用究竟是怎樣的呢?怎樣在LeNet-5的網路模型基礎上修改,以得到自己DIY的模型呢?我會在這個系列的第二篇部落格中詳細地分析一下。

你的電腦也可以看懂世界(一)——十分鐘跑起卷積神經網路(Windows+CPU)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.