深度学习21天实战实战caffe学习笔记《5 : Mnist手写体识别案例》

Mnist手写体识别案例

源码详解

MNIST

MNIST是一个大型手写体数字识别数据库,广泛应用与机器学习领域的训练和测试。包括60000个训练集和10000个测试集,每张图都已经进行尺寸归一化、数据居中处理,固定大小为28×28像素。 
这里写图片描述

数据集

使用Caffe源码目录中data/mnist下用get_mnist.sh脚本下载。

$ cd data/mnist/
$ ./get_mnist.sh

mnist数据格式描述:

data/mnist 目录下多出四个文件

文件名说明
train-images-idx3-ubyte训练集,图片
train-labels-idx1-ubyte训练集,标签
t10k-images-idx3-ubyte测试集,图片
t10k-labels-idx1-ubyte测试集,标签

测试图像和训练图像的格式无二;

转换格式

图片文件中像素按照行组织,白色(像素值0)是背景,黑色(像素值255)是前景;

下载到的数据集为二进制文件,需要转换为LMDB或LEVELDB才能被Caffe识别。

$ ./examples/mnist/create_mnist.sh
Creating lmdb...
Done.

在examples/mnist目录下生成了mnist_train_lmdb/ 和mnist_test_lmdb/ 两个目录,每个目录下都有两个文件:data.mdb和lock.mdb。 mnist_train_lmdb是LMDB格式的训练集,mnist_test_lmdb是LMDB格式的测试集。

tips:

caffe采用LMDB和LEVELDB的原因1:提供统一的数据类型格式;原因2:提高磁盘IO利用率;

网络模型

复习:Lenet的网络结构(proto配置)examples/mnist/lenet_solver.prototxt

训练网络

tips:一定要阅读打印的log;

GLOG输出格式:日期 时间 进程 号 源码文件:代码行号]输出信息;

便于追踪远啊运行流程,分析运行效率;

CPU模式:examples/mnist/lenet_solver.prototxt最后一行修改如下

# solver mode: CPU or GPU
solver_mode: CPU

运行examples/mnist/train_lenet.sh脚本

$ ./examples/mnist/train_lenet.sh 

训练的最终结果保存在examples/mnist/lenet_iter_10000.caffemodel中。

测试

使用MNIST测试集对训练好的模型进行测试

$ ./build/tools/caffe.bin test \
-model examples/mnist/lenet_train_test.prototxt \
-weights examples/mnist/lenet_iter_10000.caffemodel \
-iterations 100

命令行参数:

  • ./build/tools/caffe.bin test  表示只做预测(前向传播),不做参数更新;
  • -model examples/mnist/lenet_train_test.prototxt 指定模型描述文件
  • -weights examples/mnist/lenet_iter_10000.caffemodel 指定训练好的权值文件
  • iterations 100 指定测试迭代次数,参与测试的数目=iterations*batch_size,每次迭代的数据量在模型描述文件中设定batch_size: 100,迭代100次刚好覆盖测试集的10000个样本。
补充:
./build/tools/caffe.bin 

可以看看源文件!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女王の专属领地

您的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值