CaffeExample 在CIFAR-10數據集上訓練與測試


本文主要來自Caffe作者Yangqing Jia網站給出的examples

@article{jia2014caffe, Author = {Jia, Yangqing and Shelhamer, Evan and Donahue, Jeff and Karayev, Sergey and Long, Jonathan and Girshick, Ross and Guadarrama, Sergio and Darrell, Trevor}, Journal = {arXiv preprint arXiv:1408.5093}, Title = {Caffe: Convolutional Architecture for Fast Feature Embedding}, Year = {2014} }

 

 

1.cuda-convnet

采用的網絡是Alex Krizhevsky的cuda-convnet,鏈接中詳細描述了模型的定義、所用的參數、訓練過程,在CIFAR-10上取得了很好的效果。

2.數據集的准備

本實驗使用的數據集是CIFAR-10,一共有60000張32*32的彩色圖像,其中50000張是訓練集,另外10000張是測試集。數據集共有10個類別,分別如下所示
圖1 CIFAR-10數據集

下面假定caffe的根目錄是CAFFE_ROOT,在終端輸入命令下載數據集:

cd $CAFFE_ROOT ./data/cifar10/get_cifar10.sh #該腳本會下載二進制的cifar,並解壓,會在/data/cifar10中出現很多batch文件 ./examples/cifar10/create_cifar10.sh #運行后將會在examples中出現數據集./cifar10_xxx_lmdb和數據集圖像均值./mean.binaryproto

 

 

3.模型

CIFAR-10的卷積神經網絡模型由卷積層,pooling層,ReLU,非線性變換層,局部對比歸一化線性分類器組成。該模型定義在CAFFE_ROOT/examples/cifar10/cifar10_quick_train_test.prototxt中。

4.訓練和測試“quick”模型

寫好網絡定義和solver以后,開始訓練模型。輸入下面的命令:

cd $CAFFE_ROOT ./examples/cifar10/train_quick.sh #先以0.001的學習率迭代4000次,再以0.01的學習率接着再迭代1000次,共5000次

 

可以看到每一層的詳細信息、連接關系及輸出的形式,方便調試。
圖2
初始化后開始訓練:
圖3
在solver的設置中,每100次迭代會輸出一次訓練損失,測試是500次迭代輸出一次:
圖4
訓練階段,lr是學習率,loss是訓練函數。測試階段,score 0是准確率,score 1是損失函數。最后的結果:
圖5
測試准確率大約有0.75,模型參數存儲在二進制protobuf格式的文件cifar10_quick_iter_5000中。
參考CAFFE_ROOT/examples/cifar10/cifar10_quick.prototxt的模型定義,就可以訓練其他數據了。

5.GPU使用

CIFAR-10比較小,可以用GPU訓練,當然也可以用CPU訓練。為了比較CPU和GPU的訓練速度,通過修改cifar*solver.prototxt中的一行代碼來實現。

# solver mode: CPU or GPU solver_mode: CPU
  • 1
  • 2

6.”full”模型

同理可以訓練full模型,full模型比quick模型迭代次數多,一共迭代70000次,前60000次學習率是0.001,中間5000次學習率是0.0001,最后5000次學習率是0.00001。full模型的網絡層數也比quick模型多。
命令是:

cd $CAFFE_ROOT ./examples/cifar10/train_full.sh
  • 1
  • 2

測試准確率也比quick模型高,大約有0.82。
這里寫圖片描述

 

轉自 http://blog.csdn.net/liumaolincycle/article/details/47258937


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM