剛接觸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(生成兩個文件夾),這裏會出現問題。
解決方法:將這裏改成小一點的數值,我改的是1073741824(1GB,視情況而定吧),我之前編譯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.cpp的98行有關,其實原因就是,只要運行一次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次的,上圖如下:
具體數值及含義,有待進一步學習,本文親測有效,若有表述不當或不足之處,請大神們批評指正。