CAFFE學習筆記(一)Caffe_Example之訓練mnist
0、參考文獻
[1]caffe官網《Training LeNet on MNIST with Caffe》;
[2]薛開宇《讀書筆記4學習搭建自己的網路MNIST在caffe上進行訓練與學習》([1]的翻譯版,同時還有作者的一些註解,很贊);
1、*.sh檔案如何執行?
①方法一:有sh字尾名的是linux指令碼檔案,在windows下為了執行這個檔案,應該下載git。然後對於sh檔案右鍵,開啟方式,選擇git-bash.exe。
②方法二:直接將字尾名改成“bat”然後雙擊。
2、如何載入MNIST資料並且開始訓練?
(1)首先明確我們需要設定兩個重要的prototxt檔案,它們分別是CAFFE_ROOT/examples/mnist下的lenet_train.prototxt和lenet_solver.prototxt。
(2)在lenet_train.prototxt中:
①在此給出用於訓練的MNIST資料mnist-train-leveldb以及mnist-test-leveldb的路徑;
②在此定義這個網路都有哪些層,給出每一層的定義。
(3)在lenet_solver.prototxt中:
①在此指明我們要訓練的網路是lenet_train.prototxt,給出lenet_train.prototxt的路徑;
②在此指定是用CPU還是GPU。
(4)在CAFFE_ROOT/examples/mnist下找到sh檔案train_lenet.sh,在裡面給出:
①caffe編譯後生成的可執行檔案exe的名稱(帶不帶“.exe”都可以),後面跟“train”代表選擇“訓練”;
②剛才寫好的lenet_solver.prototxt的路徑。
然後雙擊執行該指令碼檔案即可。
3、關於路徑
如2中所述,在這兩個prototxt和一個sh檔案中,都要指明一些檔案的路徑。現總結如下:
(1)lenet_train.prototxt中:訓練集mnist-train-leveldb與測試集mnist-test-leveldb的路徑;
(2)lenet_solver.prototxt中:3-(1)的prototxt檔案lenet_train.prototxt的路徑;
(3)train_lenet.sh中:caffe可執行檔案exe名稱,以及3-(2)的prototxt檔案lenet_solver.prototxt的路徑。
4、能夠讓程式跑起來的設定方法(法一)
(1)在CAFFE_ROOT/x64/Debug中,新建一個資料夾example2,使該資料夾與可執行檔案Caffe.exe處於同一路徑中;
不要管examples和myexamples,這兩個資料夾是師兄拷給我的時候就有了的,一個是caffe自帶的,一個是師兄做的實驗。總而言之與example2是獨立關係。
(2)將剛才CAFFE_ROOT/examples/mnist下的mnist-test-leveldb、mnist-train-leveldb、lenet_train_test.prototxt以及lenet_solver.prototxt這四個檔案全部拷貝到example2中去。
(3)設定prototxt檔案,給出相應的路徑。
①lenet_train_test.prototxt
這個檔案即之前說的lenet_train.prototxt,為了便於區分在後面加了一個_test。給出相對路徑如下:
此處給出絕對路徑也是可以的。如:
②lenet_solver.prototxt
設定相對路徑:
這裡給出絕對路徑也是可以的。如:
(4)將CAFFE_ROOT/examples/mnist下的train_lenet.sh檔案拷貝到CAFFE_ROOT/x64/Debug中,使之與可執行檔案Caffe.exe以及example2處於同一目錄下。
開啟train_lenet.sh檔案,修改內容如下:
修改該檔案字尾名為bat,雙擊train_lenet.bat,則可以成功跑起來。
5、能夠讓程式跑起來的設定方法(法二)
這一次我們不再新建example2,亦不改動sh檔案字尾名為bat,而是直接在CAFFE_ROOT/examples/mnist下修改兩個prototxt檔案和一個sh檔案。這種方法更加簡單直接,但是要注意儲存prototxt檔案備份以免寫壞了改不回去。
關於這兩個prototxt檔案如何設定路徑在此不贅述。我直接給出設定截圖如下:
lenet_train_test.prototxt:
lenet_solver.prototxt:
接下來設定sh檔案train_lenet.sh:
設定完畢後,雙擊sh檔案,則可以出現如下結果:
6、總結
(1)在設定一些檔案的路徑時,可以給出絕對路徑,也可以給出相對路徑。
(2)在使用train_lenet.sh訓練時,可以直接使用sh檔案跑起來,也可以修改後綴名為bat然後跑程式。
(3)本文僅僅針對於如何“訓練網路”展開,至於如何開啟測試模式test對已經訓練好網路進行測試,目前還沒有進行這個實驗,等之後做好了會更新文章的。