Windows+CPU+Caffe配置與運行

一:目的

實現Windows版本Caffe(no GPU)的配置,並運行MNIST數據集以驗證Caffe配置的正確性;

二:環境

1. Win 10(64位)
2. VS 2013

三:配置

1. Caffe-Windows下載;
(1) 下載Caffe-Windows,並解壓,解壓後如圖所示;



值得注意的是,當前github中的版本沒有對應的Windows文件夾,需要用cmake進行產生。這裏提供一個之前的版本,解壓完後就包含Windows文件夾。鏈接:https://pan.baidu.com/s/1nxggNSP 密碼:344h
同樣的,也可以在github上下載由微軟提供的Caffe,後續的過程基本相同,鏈接爲https://github.com/Microsoft/caffe

(2) 修改配置文件,將caffe-windows\windows\CommonSettings.props.example備份,並重命名爲CommonSettings.props,編輯CommonSettings.props如下。


在這裏主要是把CpuOnlyBuild設置爲了true,把UseCuDNN設置爲了false

2. 編譯Caffe-Windows;

(1)  用VS2013打開caffe-windows\windows\Caffe.sln,修改其配置屬性爲x64,Release版本,生成解決方案即可。

(2)  由於官方caffe-windows 的版本使用了NuGet管理第三方開發包,所以用vs2013進行編譯時候回自動安裝NuGet(該過程較慢)。生成成功之後的文件都在.\Build\x64\Release中。


(3)編譯過程中可能會出現一些錯誤,可以參考http://blog.csdn.net/wonder233/article/details/58255544的一些解決方案

(4) 如果不想讓VS2013自動下載NuGet,這裏提供一個打包好的下載鏈接,鏈接:https://pan.baidu.com/s/1kW2Vsc3 密碼:yyvo,解壓後放到與caffe-windows同級的目錄下即可



四:測試(MNIST數據集)

1. 下載MNIST數據集,共包含四個文件,分別是訓練集圖像,訓練集標籤,測試集圖像,測試集標籤。關於MNIST數據集的介紹可參見http://blog.csdn.net/simple_the_best/article/details/75267863
2. 將數據集解壓到caffe-windows\examples\mnist\mnist_data目錄下,由於caffe只支持leveldb或lmdb文件格式,所以需要對該數據集進行數據格式轉換。
3. 轉換數據格式
(1) 在caffe-windows文件夾下創建mybat\mnist文件夾,用於存放bat文件
(2) 在caffe-windows\mybat\mnist文件夾新建convert-mnist-data.bat文件,用於數據格式的轉換,內容如下

..\..\Build\x64\Release\convert_mnist_data.exe  --backend=lmdb ..\..\examples\mnist\mnist_data\train-images.idx3-ubyte ..\..\examples\mnist\mnist_data\train-labels.idx1-ubyte ..\..\examples\mnist\mnist_data\mnist_train_lmdb\
..\..\Build\x64\Release\convert_mnist_data.exe  --backend=lmdb ..\..\examples\mnist\mnist_data\t10k-images.idx3-ubyte ..\..\examples\mnist\mnist_data\t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_data\mnist_test_lmdb\  
pause

轉換爲lmdb數據格式,同樣的,也可以將其轉換爲leveldb格式,只需要在後續步驟中修改相應的配置即可。轉換成功後,在caffe-windows\examples\mnist\mnist_data文件夾下出現兩個文件夾,分別是mnist_test_lmdb和mnist_train_lmdb,裏面的文件如下上述批處理語句是調用剛纔convert_mnist_data.exe對mnist數據集進行格式轉換,其中--backend=lmdb的意思是將mnist數據集


值得注意的是,這一步可能會check failed mdb_env_open(mdb_env, db_path, 0, 0664) == 0 (112 vs. 0) mdb_env_open failed的錯誤,解決方案是將

把convert_mnist_data.cpp裏面的CHECK_EQ(mdb_env_set_mapsize(mdb_env,107374182), MDB_SUCCESS)這一行代碼中的數字改小一點,例如將其改爲100M,具體可參考該鏈http://blog.csdn.net/ccemmawatson/article/details/51251061

(3) convert_mnist_data.exe的命令格式爲:

convert_mnist_data [FLAGS] input_image_file input_label_file output_db_file

[FLAGS]:轉換的文件格式可取leveldb或lmdb,示例:--backend=leveldb

Input_image_file:輸入的圖片文件,示例:train-images.idx3-ubyte

input_label_file:輸入的圖片標籤文件,示例:train-labels.idx1-ubyte

output:保存輸出文件的文件夾,示例:mnist_train_lmdb

4. 修改caffe-windows\examples\mnist\lenet_train_test.prototxt爲如下


該文件是網絡結構的配置文件,主要修改的地方有三個,分別爲source,表示的是數據,選擇剛纔生成的數據即可。其次是batch_size,這部分可以根據自己計算機配置進行修改,第三個爲backend,由於剛纔生成的是LMDB格式,因此在這裏將其改爲LMDB(如果前面生成的是leveldb格式,這裏需要對應的改爲LEVELDB

5. 修改caffe-windows\examples\mnist\lenet_solver.prototxt爲如下


需要修改的部分爲紅框標註出來的部分,最後一部分選擇solver mode爲CPU

6. 開始訓練

在caffe-windows\mybat\mnist文件夾新建run.bat文件,用於數據的訓練,內容如下

..\..\Build\x64\Release\caffe.exe  train --solver=..\..\examples\mnist\lenet_solver.prototxt  
pause  
運行該bat文件,即可進行訓練,訓練結果如下所示


迭代10000次即可完成,enjoy!


參考:

Windows下caffe安裝詳解





















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章