1. 程式人生 > >windows(無GPU)+VS2013,caffe安裝測試mnist問題及解決

windows(無GPU)+VS2013,caffe安裝測試mnist問題及解決

剛接觸DL,caffe安裝,小菜一枚,僅此記錄走過的坑。整不起GPU,只能在CPU上比劃比劃。

一、準備工具:

VS2013(本文僅限於VS2013版本,VS2015版本目前還未搞定,搞定後待續)

windows版本的caffe https://github.com/BVLC/caffe/tree/windows(直接開啟下載到caffe-windows壓縮檔案,解壓即可,本文未改解壓檔名,以下涉及的目錄都是從該檔案caffe-windows往下的,安裝繁瑣,目錄搞對很關鍵)


二、安裝過程:

1、caffe-windows\windows目錄下,CommonSettings.props.example複製一份更名為CommonSettings.props,


開啟並修改如下幾個地方,只用CPU訓練故CpuOnlyBuild設為true,UseCuDNN設為false,不用GPU所以Cuda版本7.5那個就沒管。由於是菜鳥,就不考慮和Python、MATLAB結合做什麼東西,先玩玩caffe,熟一點之後在做其他,因此後面兩個Support都設為false。這個檔案其他地方不用修改。


2、用VS2013開啟Caffe.sln檔案,解決方案會包含15個專案,右鍵解決方案,生成解決方案,會在caffe-windows檔案相同的目錄下生成NugetPackages資料夾,資料夾內容如下:


等待幾分鐘,NugetPackages資料夾生成完之後,右鍵解決方案,屬性,通用屬性-啟動專案,點選當前選定內容,然後確定。


3、找到caffe->caffe.cpp,ctrl+f5編譯該檔案,編譯成功後,出現如下圖,即表示安裝成功。


以上安裝過程,主要參考了http://blog.csdn.net/qq_14845119/article/details/52415090,特此感謝。不過安裝期間,還算順利,故沒出現其他狀況。不過,mnist測試時,出了兩個問題,解決如下,希望對初學者有所幫助。

三、mnist測試問題:

1、去官網http://yann.lecun.com/exdb/mnist/下載,如下四個檔案,


不難看出,兩個train的和兩個test的,然後把train的兩個檔案解壓放在caffe-windows\data\mnist\mnist_train_lmdb,把test的兩個檔案解壓放在caffe-windows\data\mnist\mnist_test_lmdb(不要搞錯,後面用到資料集也會用到這個路徑)。



2、在caffe-windows根目錄下,編寫create_mnist.bat檔案,內容如下:

.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\mnist_train_lmdb\train-images.idx3-ubyte 
.\data\mnist\mnist_train_lmdb\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb   
echo.  
.\Build\x64\Release\convert_mnist_data.exe .\data\mnist\mnist_test_lmdb\t10k-images.idx3-ubyte   
.\data\mnist\mnist_test_lmdb\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb   
pause  

然後儲存,雙擊該指令碼create_mnist.bat執行

然而,問題來了:(1)、雙擊該指令碼,如果不做其他修改,且在caffe-windows\examples\mnist\mnist_train_lmdb  所在的盤沒有1TB的空間的時候,會出現check failed,如下:


可以看到是convert_mnist_data.cpp裡面傳出的,首先找到該檔案在caffe-windows\examples\mnist路徑下,開啟該檔案可以看到:


這裡出現的是(112 vs. 0),與圖中101行劃線的地方有關,該行經查閱http://www.voidcn.com/blog/whiteinblue/article/p-3126704.html,應該是檢查lmdb操作的一個空間的大小,那個數值也就是1TB的大小,所以caffe-windows所在的盤沒有2TB(生成兩個資料夾),這裡會出現問題。

解決方法:將這裡改成小一點的數值,我改的是10737418241GB,視情況而定吧),我之前編譯Caffe.cpp的時候,掃了一眼解決方案中有convert_mnist_data專案,重新開啟看了一下確實有,由於convert_mnist_data.cpp改動,回去對Caffe.sln重新生成一次解決方案,編譯,不然create_mnist.bat裡面,要用到的convert_mnist_data.exe還是原來的,執行create_mnist.bat檔案又會出現相同的問題。

2)、重新生成解決方案,編譯caffe.cpp後,如果直接雙擊create_mnist.bat,就會出現如下問題:


這裡出現的是(-1 vs. 0),與convert_mnist_data.cpp98行有關,其實原因就是,只要執行一次create_mnist.bat,就會在caffe-windows\examples\mnist路徑下生成兩個資料夾,如下:

如果檔案已經存在就會出現本問題。

解決方法:雙擊執行create_mnist.bat之前,去caffe-windows\examples\mnist下,確認這兩個檔案是否已經存在,如果有,就刪掉。

3、修改caffe_windows\examples\mnist\lenet_solver.prototxt,將最後一行改為solver_mode:CPU,懶得上圖了。

4、在caffe_windows根目錄下,編寫train_mnist.bat檔案,內容如下:

.\Build\x64\Release\caffe.exe train --solver=.\examples\mnist\lenet_solver.prototxt  
pause  

雙擊執行該檔案,就開始訓練了,10000次迭代太久,為了截個圖,來個1000次的,上圖如下:


具體數值及含義,有待進一步學習,本文親測有效,若有表述不當或不足之處,請大神們批評指正。