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對已經訓練好網絡進行測試,目前還沒有進行這個實驗,等之后做好了會更新文章的。