运行手写体数字识别例程

夙愿已清 提交于 2019-12-05 09:06:54

1.MNIST数据集

(Mixed National Institute of Standards and Technology)是一个大型的手写体数字数据库,广泛用于机器学习领域的训练和测试。包括60000个训练集和10000个测试集,每张图进行尺寸归一化,数字居中处理,固定尺寸为28*28px。
这里写图片描述

1.1下载MNIST数据集

cd caffe
cd data/mnist/
./get_mnist.sh
tree(如果没有要安装sudo apt install tree)
这里写图片描述

1.2MNIST数据格式描述
这里写图片描述
这里写图片描述

1.3转换格式

下载到的原始数据集为二进制文件,需要转换为LEVELDB或LMDB才能识别。
在caffe根目录下执行./examples/mnist/create_mnist.sh
可以看到examples/mnist下有两个目录
蓝色涂掉的部分为yourname

2 LeNet5模型

2.1模型描述

examples/minist/lenet_train_test.prototxt查看

数据源mnist负责从预处理得到的lmdb数据库中读取数据data和标签书label,图像数据送入后续CNN结构中进行处理,CNN结构包括一组由卷积层conv(1,2)+下采样层pool(1,2)交替形成的特征层ip1和ip2(类似于多层感知器结构)。对ip2的输出进一步同标签数据label对比,可计算分类准确率accuracy和损失值loss。

2.2训练超参数

examples/mnist/train_lenet.sh查看
–solver=examples/mnist/lenet_solver.prototxt指定了训练超参数(Hyper-Paramenter)

2.3训练日志

./examples/mnist/train_lenet.sh
这里写图片描述
问题:没有改成CPU
将–solver=examples/mnist/lenet_solver.prototxt中的模式改为CPU
再输入./examples/mnist/train_lenet.sh

跑起来

./examples/mnist/train_lenet.sh

2.4用训练好的模型对数据进行预测

利用训练号的模型权值文件(examples/mnist/lenet_iter_10000.caffemodel)可以测试数据集(或外部测试集)进行预测。
命令
./build/tools/caffe.bin test-model=examples/mnist/lenet_train_test.prototxt-weights= examples/mnist/lenet_iter_10000.caffemodel

解释:
第一行:表示只做预测(前向传播计算),不进行参数更新(后向传播计算)。
第二行:指定模型描述文本文件。
第三行:指定模型预先训练好的权值文件
第四行:指定测试迭代次数。参与测试的样例数目为(iterations*batch_size)。
batch_size在model prototxt中设定,为100时刚好覆盖全部10000个测试样本。

参考:深度学习21天实战Caffe。作者:赵永科

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!