運行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、訓練超參數,有兩種方式:
(1)通過命令行執行訓練,代碼如下:(這是書上的例子,可以參考網址上的例子,在后面。不同之處:網址上的例子在此處新建一個文件夾保存訓練的模型)
cd ./caffe
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
(2)將以上訓練的命令行代碼寫成訓練腳本並命名為train_lenet.sh,放到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文件),再重新訓練。
部分訓練過程截圖如下:等待幾分鍾,訓練好后截圖如下,准確率99.08%:
最終訓練的模型保存在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/lenet_iter_5000.caffemodel
運行caffe自帶的mnist實例教程測試迭代10000次的模型,代碼如下:
cd ./caffe
./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel