前面训练了mnist数据集!但caffe自带的数据集还有cifar10数据集。同样cifar10数据集也是分类数据集,共分10类。cifar10数据集中包含60000张32x32的彩色图片。(其中包括50000张作为训练集,10000张作为测试集)对于cifar10数据集更为详细的了解请各位百度,在此不再赘述。本文主要谈谈使用caffe自带模型对cifar10数据集进行训练的过程。
cifar10数据集训练步骤如下:
进入caffe目录(cd caffe),输入以下指令:
./data/cifar10/get_cifar10.sh
程序运行结束即可在同一目录下生成训练集和测试集数据。
输入以下命令:
./examples/cifar10/create_cifar10.sh
在caffe/data/cifar10中出现相关数据,在caffe/examples/cifar10中出现cifar_train_lmdb和cifar_test_lmdb。
若是使用CPU进行训练,对文件做部分修改,在solvers文件中将solver_mode中的GPU改为CPU。
使用以下命令:
./examples/cifar10/train_quick.sh
以上就完成了cifar10数据集(quick版)的训练。什么叫quick版呢?原来在cifar10数据集中根据训练次数的多少。把训练模型分为了quick版和full版。下面介绍下quick和full的区别:
quick中先以0.001的学习率训练4000次(见文件caffe/cirfa10/cirf10_quick_solver)。再以0.0001的学习率训练1000次(见文件caffe/cirfa10/cirfa10_quick_solver_lr1)
full中先以0.001的学习率训练60000次(见文件caffe/cirfa10/cirfa10_full_solver),再以0.0001的学习率训练5000次(见文件caffe/cirfa10/caifa10/cirfa10_full_solver_lr1),再以0.00001的学习率训练5000次(见文件caffe/cirfa10/cirfa10_full_solver_lr2)。
Quick和full版本结构图如下:
1.quick版本:
2.full版本:
两图之间最大的区别:full使用了1个全连接层,quick使用了2个全连接层
正如题目所说,很多人会有疑惑:啥叫自带模型?其实这个意思是caffe下载的时候自动提供的文件,而且我也不知道用什么名字去形容。下面详细的介绍下整个训练模型的结构:
输入层-卷积层1-池化层1(最大池化)-非线性层1(relu)-norm层1-卷积层2-非线性层2(relu)-池化层2(平均池化)-norm层2-卷积层3-非线性层3-池化层3(平均池化)-全连接层-精度层-输出损失层
相对于之前的mnist数据集的训练,norm层是新增加的。下面简单介绍一下norm层。(更为详细的介绍,请各位自行百度)
norm层介绍:Local Response Normalization (LRN)层,此层是对一个输入的局部区域进行归一化。在Alexnet和Googlenet中都使用了这个类型的层
同样不要忘记,对模型的测试:
sudo ./build/tools/caffe.bin test -model=examples/cifar10/cifar10_quick_train_test.prototxt
-weights=examples/cifar10/cifar10_quick_iter_4000.caffemodel
;
到此为止,完成了cifar10数据集的模型建立。第二次完成后是不是感觉轻车熟路,理解更深了呢?在后面的博客中,会使用其他更为经典、更为著名的模型对cifar10进行测试。(ps:为啥选择cifar10而不是mnist,是因为在Lenet网络结构下,mnist数据集模型的精度已经达到较高水平,换用其他高级模型增长不是特别大了,使用cifar10更为典型!)
由于本文作者水平有限,如有不足之处,请各位在下方评论区指正,谢谢!