本教程盡量詳細,大多步驟都有圖,如果運行出錯,請先對照自己的文件是否和圖上的一樣,包括標點啊,空格啊,斜杠,反斜杠啊之類的小細節。
第一步: 官網下載mnist數據 http://yann.lecun.com/exdb/mnist/,共4個文件,解壓放到caffe-master\data\mnist下
如圖:
第二步: 轉換成caffe需要的數據格式,此處轉換為 LMDB(cifar是轉換成 LEVELDB,可對比參考如何實現的) ,轉換格式需要用到caffe里的項目convert_mnist_data ,這個convert_mnist_data.exe程序是放在caffe-master\Build\x64\Release下,如果是用 debug生成的解決方案,則是在caffe-master\Build\x64\Debug下,這個在寫 bat文件的時候要注意更改相應的路徑。
在caffe-master\data\mnist下新建一個文本文檔,更改后綴為 .bat 在里面復制以下code:
..\..\Build\x64\Release\convert_mnist_data.exe ..\..\data\mnist\train-images.idx3-ubyte ..\..\data\mnist\train-labels.idx1-ubyte ..\..\examples\mnist\mnist_train_lmdb
echo.
..\..\Build\x64\Release\convert_mnist_data.exe ..\..\data\mnist\t10k-images.idx3-ubyte ..\..\data\mnist\t10k-labels.idx1-ubyte ..\..\examples\mnist\mnist_test_lmdb
pause
其實第一個路徑就是 exe文件所在路徑, 后面兩個就是數據所在路徑,最后一個是輸出文件路徑
保存后,雙擊運行
如圖:
(PS:想轉換成LEVELDB格式的話,只需要在.bat文件中把 mnist_train_lmdb改成mnist_train_leveldb ,有兩處喔! )
第三步: 更改lenet_train_test.prototxt 和lenet_solver.prototxt文件,主要是改數據的路徑以及數據的格式(默認LMDB,若在第二步轉成了LEVELD的話,要改成LEVELDB )
首先 lenet_train_test.prototxt改的有
source: "../../examples/mnist/mnist_train_lmdb"
batch_size: 64
backend: LMDB
source:"../../examples/mnist/mnist_test_lmdb"
batch_size: 100
backend: LMDB
如圖:
lenet_solver.prototxt改的有
net:"../../examples/mnist/lenet_train_test.prototxt"
snapshot_prefix:"../../examples/mnist/lenet"
如圖:
若用CPU在最后一行改成 CPU
第四步: 開始訓練,和之前我博客里cifar10一樣,有兩種方法,這里只介紹第一種方法,用批處理文件的方法(想知道第二種方法的請查看之前博客http://blog.csdn.net/u011995719/article/details/53998331)
在caffe-master\examples\mnist 下建立文本文檔,后綴改為 .bat 復制以下code:
..\..\Build\x64\Release\caffe.exe train--solver=../../examples/mnist/lenet_solver.prototxt
Pause
如圖:
保存,雙擊運行,彈出命令窗,等待訓練結束,我的顯卡是 GTX 960M ,只需要1分07秒就迭代了10000次,准確率 0.9915(用了一台i3的筆記本,cpu跑的,用了17分鍾!)
如圖:
PS: 總結兩個遇到問題:
1. 轉換數據時候要確定轉換的是 LMDB還是LEVELDB,這個是在一開始轉換的時候設置的,一旦設置,在后面的train_test.prototxt文件中一定要對應的改過來,切記,切記。
2.Debug 和 Release ,這個是在VS2013中選擇的,具體有什么區別我不太清楚(百度了,說對使用問題不大),但是我們在調用例如 convert_mnist_data.exe 、compute_image_mean.exe等這些 應用程序時,要選擇路徑,一定要看清楚你生成的是在Debug文件夾(caffe-master\Build\x64\Debug)里還是在Release(caffe-master\Build\x64\Release)里,如果你生成的是在Debug里,而調用的時候是用路徑:. Build\x64\Release 的話,就會出現如下錯誤:
當然,可以在VS2013中分別 選擇 Debug和Release 進行生成,這樣就不用擔心第二個問題啦。