執行caffe自帶的mnist例項教程

zhu_Lydia發表於2018-03-31

執行caffe自帶的mnist例項教程

本文結合幾篇博文總結下來的,附上其中一篇原博文連結以供參考:http://blog.sina.com.cn/s/blog_168effc7e0102xjr1.html

 

1、先進入caffe檔案目錄,(指令:cd ./caffe),再用data/mnist下的get_mnist.sh下載MNIST資料集,程式碼如下:

sudo sh ./data/mnist/get_mnist.sh

開啟下載目錄caffe/data/mnist檢視如下圖:

 

2、轉換格式,程式碼如下:

 ./examples/mnist/create_mnist.sh(若出錯:./examples/mnist/create_mnist.sh: 17: ./examples/mnist/create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found。則應先執行編譯:make all -j4,然後再執行命令:./examples/mnist/create_mnist.sh)

完成後在examples/mnist生成了兩個目錄:mnist_test_lmdb和mnist_train_lmdb:

 

每個目錄下有兩個檔案:data.mdb和lock.mdb:

網路結構定義在./examples/mnist/lenet_train_test.prototxt中。

訓練引數配置在./examples/mnist/lenet_solver.prototxt中。

如果電腦有GPU,則不需要修改配置檔案;如果沒有GPU則需要修改lenet_solver.prototxt,在訓練之前需要修改

./examples/mnist/lenet_solver.prototxt最後的(solver_mode: GPU)修改為:solver_mode: CPU

這樣保證整個訓練過程在CPU上進行。

3、訓練超引數,程式碼如下:(這是書上的例子,可以參考網址上的例子,在後面。不同之處:網址上的例子在此處新建一個資料夾儲存訓練的模型)

cd ./caffe

./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt

 部分訓練過程截圖如下:等待幾分鐘,訓練好後截圖如下,準確率99.08%:

  

 

4、執行例子(執行訓練命令)

定位到mnist目錄下執行train_lenet.sh,程式碼如下:

cd  ./caffe

./examples/mnist/train_lenet.sh(若出錯:Check failed: mdb_status == 0 (13 vs. 0) Permission denied  *** Check failure stack trace: ***則進入caffe目錄下,先清除:sudo make clean(刪掉了原有build檔案)後,並重新編譯:sudo make all -j4(重新生成build檔案),再重新訓練超引數 (第3步./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt),最後再執行訓練:./examples/mnist/train_lenet.sh)。

最終訓練的模型儲存在caffe/examples/mnist/lenet_iter_10000.caffemodel檔案中,訓練狀態儲存在caffe/examples/mnist/lenet_iter_10000.solverstate檔案中。

5、用訓練好的模型對資料進行預測。

利用訓練好的Lenet-5模型權值檔案(examples/mnist/lenet_iter_10000.caffemodel)可以對測試資料集(或外部測試集)進行預測,程式碼如下:(注意caffe.bin ,prototxt ,caffemodel 等的路徑一定要根據自己的寫對:)

cd  ./caffe

./build/tools/caffe.bin test \  

-model=examples/mnist/lenet_train_test.prototxt \

-weights=examples/mnist/lenet_iter_10000.caffemodel \

-iterations=100 

(\表示回車,也可以不要它,直接將這四行程式碼寫成一行程式碼,注意caffe.bin ,prototxt ,caffemodel 等的路徑一定要根據自己的寫對:

./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_5000.caffemodel -iterations=100)

預測結果如下:

 

================================= 書上的例子到此結束 =======================

×××××××××××××××××××× 下面是參考網址上的例子 ××××××××××××××××××××××

網址上例子訓練模型部分,從前面第三部分開始。在此處建立了一個資料夾儲存模型,這方法很好。新建資料夾程式碼如下:

cd  ./caffe/examples/mnist

mkdir model_mnist

檢視一下,輸入如下程式碼

 ls

建好資料夾後需要修改caffe/examples/mnist/lenet_solver.prototxt 中的snapshot_prefix。

訓練網路前先檢視一下build/tools/caffe.bin 的用法。

訓練網路的程式碼如下:

cd  ./caffe

./examples/mnist/train_lenet.sh

訓練完成後,在examples/mnist/model_mnist下產生了4個檔案。本例設定迭代5000次輸出一個模型和訓練狀態儲存下來,故儲存了迭代5000次和迭代10000次的訓練模型與訓練狀態。

測試迭代5000次的模型,程式碼如下:

cd  ./caffe

./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt  -weights=examples/mnist/model_mnist/lenet_iter_5000.caffemodel

執行caffe自帶的mnist例項教程測試迭代10000次的模型,程式碼如下:

cd  ./caffe

./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/model_mnist/lenet_iter_10000.caffemodel

相關文章