本文记录的是在Windows Caffe上训练和测试CIFAR-10数据集的过程,其实对于这次训练难点在于CIFAR-10数据集的格式转换与处理上,在上一篇文章中,我已经做了记录。这篇文章中记录下的难点是bat文件的书写,其他步骤均进行的很流畅。
0.CIFAR-10数据集
CIFAR-10数据集由10个种类的60000张32*32的彩色图片组成,每类图片6000张。50000张训练图片和10000张测试图片。
1.准备数据集
从CIFAR-10官网下载binary格式的数据集,进行处理:1.转换为LEVELDB格式。2.求图像数据的均值。(具体记录在上一篇博客中,不再赘述)
2.模型
CIFAR-10模型是一个CNN模型:由卷积层、下采样层、RELU以及在顶端的局部对比归一化线性分类器组成。该模型已经定义在CAFFE_ROOT/examples/cifar10 路径下的 cifar10_quick_train_test.prototxt中。
3.训练和测试“快速”模型
当你在已经写好定义网络的protobuf文件和求解其的protobuf文件,训练模型是很简单的。
已经给定的网络定义文件为cifar10_quick_train_test.prototxt,需要进行编辑修改。
根据具体情况,正确填写即可,截图如下:
注:一定要用“/”,很不显眼的错误,很需要注意!!
已经给定的求解器文件为cifar10_quick.prototxt,需要进行编辑修改:
红色方框标出,正确填写即可:
.bat文件的书写,截图如下,其存放路径为examples\cifar10:
双击运行即可,运行过程如下(下面的图片和文字均直接翻译自官方文档:CIFAR-10 Tutorial):
当开始运行时,你会看到这样的信息:
这些信息是告诉你每一层的信息,它的连接和输出形状,在调试的时候或许很有用。在初始化之后,将开始进行训练:
在求解其设置中,我们每经过100次迭代,打印出训练损失函数,并且每经过500次迭代,测试网络。你将看到像这样的信息:
对于每一次训练迭代,lr是迭代的学习率,loss是代价函数。
对于测试阶段的输出,score 0 是准确率,score 1 是测试损失函数。
在经过一段时间之后,程序将运行完毕!
我们的模型可以得到约75%的测试准确率。模型参数保存在二进制protobuf格式文件cifar10_quick_iter_5000中。
在我自己电脑上的运行结果,截图如下:
参考文档: