怎么使用 Caffe 进行 LetNet-5 的训练和预测

在 LeNet5的深入解析 我们已经对 LetNet-5 网络结构做出了详细的描述,接下来我们将深入分析 Caffe 中怎么使用 LetNet-5 的这个模型进行预测。
Caffe 中关于 LetNet-5 的实现文件主要存放于
https://github.com/BVLC/caffe/tree/master/examples/mnist

第一步是进行 Caffe 的安装

接着看看在 Caffe 中怎么用 LetNet-5 进行训练和测试,整个流程如下:(先cd到 Caffe 的根目录下)
1)下载 minist 数据的命令:
$ cd data/mnist
$ ./get_mnist.sh
这个脚本主要内容是从 http://yann.lecun.com 上下载 mnist 训练和测试数据,并解压

2)将下载的数据转换为 Caffe 能识别的数据格式 LEVELDB 或 LMDB,对应的命令为:
$ ./examples/mnist/create_mnist.sh
上面的脚本调用了 build/examples/mnist/convert_mnist_data.bin这个可执行程序,对应的源文件为 convert_mnist_data.cpp
完成之后,在目录 examples/mnist 发现生成了 examples/mnist/mnist_train_\ lmdb/ (对应训练集) 和 examples/mnist/mnist_test_lmdb/ (对应测试集或验证集)两个目录,每个目录下都有两个文件: data.mdb和lock.mdb

3)定义 LetNet-5 网络模型,在 lenet.prototxt 中描述了广义的LetNet-5网络层设置,在 lenet_train_test.prototxt 中描述了 LetNet-5 训练和 测试时各网络层的设置。大致是差不多的,就是有些细节不一样。

4)有了网络模型,在训练前我们还需要指定一些训练参数,在lenet_solver.prototxt 中实现该功能的。这个文件最后一行是 GPU,如果没有GPU,需要改为CPU。不然报错

5) 现在我们有了训练数据、网络模型、指定了相关训练参数,可以开始训练网络 LetNet-5 了,使用下面的命令:
$./examples/mnist/train_lenet.sh,训练完成之后,我们得到了一个关于 LetNet-5 在 mnist 数据上的模型 caffemodel

train_lenet.sh:
./build/tools/caffe train -solver=examples/mnist/lenet_solver.prototxt

6)使用训练好的模型对数据进行预测,运行下面的代码:
$ ./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), test batch 设置为 100, 所以iterations =100时,刚好覆盖 10000个测试样本。

后续我们将对模型文件进行深入解析

你可能感兴趣的:(Caffe)