使用caffe自带模型训练cifar10数据集

  前面训练了mnist数据集!但caffe自带的数据集还有cifar10数据集。同样cifar10数据集也是分类数据集,共分10类。cifar10数据集中包含60000张32x32的彩色图片。(其中包括50000张作为训练集,10000张作为测试集)对于cifar10数据集更为详细的了解请各位百度,在此不再赘述。本文主要谈谈使用caffe自带模型对cifar10数据集进行训练的过程。

  cifar10数据集训练步骤如下:

  1.下载cifar10数据集:

  进入caffe目录(cd caffe),输入以下指令:

./data/cifar10/get_cifar10.sh

  程序运行结束即可在同一目录下生成训练集和测试集数据。

  2.转换数据格式:

  输入以下命令:

./examples/cifar10/create_cifar10.sh

  在caffe/data/cifar10中出现相关数据,在caffe/examples/cifar10中出现cifar_train_lmdb和cifar_test_lmdb。

  3.配置适合自己的solver文件:

  若是使用CPU进行训练,对文件做部分修改,在solvers文件中将solver_mode中的GPU改为CPU。

  4.开始训练数据:

  使用以下命令:

./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更为典型!)

由于本文作者水平有限,如有不足之处,请各位在下方评论区指正,谢谢!

猜你喜欢

转载自blog.csdn.net/gls_nuaa/article/details/107644047