参考
caffe基础知识:https://www.cnblogs.com/luludeboke/p/7813060.html
过程参考:https://blog.csdn.net/qq_41554005/article/details/79594562
https://blog.csdn.net/dcrmg/article/details/73479763
报错参考:
https://blog.csdn.net/handsomeandge/article/details/107351869
https://blog.csdn.net/qq_35296537/article/details/79901849
准备数据
首先要准备训练测试需要的数据:http://yann.lecun.com/exdb/mnist/ (xuyaopaqiang)
下载四个压缩包,位置没有要求:
(记得解压,解压完是IDX3-UBYTE文件。笨比博主一开始没注意到是压缩包导致后面一直识别不到文件QAQ。)
生成lmdb
这一步目的在于把待处理的数据转换成caffe中能够处理的文件格式(leveldb/lmdb)文件。
新建一个文本文件,存储为bat文件格式,位置同样不作要求。
下面路径要根据自己安装路径修改。
E:/caffe/caffe/scripts/build/examples/mnist/Release/convert_mnist_data.exe D:/Users/MY/Desktop/bishe/CNN/train-images.idx3-ubyte D:/Users/MY/Desktop/bishe/CNN/train-labels.idx1-ubyte E:/caffe/caffe/examples/mnist/mnist_train_lmdb
echo.
E:/caffe/caffe/scripts/build/examples/mnist/Release/convert_mnist_data.exe D:/Users/MY/Desktop/bishe/CNN/t10k-images.idx3-ubyte D:/Users/MY/Desktop/bishe/CNN/t10k-labels.idx1-ubyte E:/caffe/caffe/examples/mnist/mnist_test_lmdb
pause
简单来说,上下两部分,上部分是训练集的转换,下部分是测试集的转换,上下两part要改的只有训练集和测试集的数据包名称。
在训练集的格式转换中,第一个路径是caffe安装的位置,我看了一些博客,可能是版本问题,每个人的路径会稍有不同,可以自己搜索一下;后面两个路径就是你刚刚下载安装包的路径;最后一个路径是你要存储转换好的数据的位置。
报错记录
1、Check failed: image_file Unable to open file
解决方案参考该链接,由于文件命名与create_mnist.ps1中不一致造成的,一个是train-images.id1-ubyte,一个是train-image-id-ubyte,统一即可
2、这里的路径我用“\”会出错,根据该博主的解释是因为caffe使用的的C++中“\”是转义符。
测试集部分同理。
双击bat文件运行,生成文件如下。
创建模型
配置prototxt文件
在caffe中仅需配置prototxt文件即可定义网络模型,在这里我们需要修改lenet_solver.prototxt和lenet_train_test.prototxt两个文件。
solver文件
主要是整个网络模型的总体的一些参数,例如batchsize,学习率等等。(基础知识有不理解的建议可以看看mooc上浙大机器学习的课程,我觉得讲得很清楚。)
这里我需要修改三处:
1、net:找到lenet_train_test修改成自己的路径;
2、snapshot_prefix:模型生成的指定位置;
3、solver_mode:最后我用的是CPU,所以solver_mode要改成CPU。
lenet_train_test文件
我的理解这里设置的是每一层的具体参数,至于详细解释可以参考我列的第一个参考博客,不多赘述。
要修改的是两个数据层的路径,分别是我们刚刚生成的两个文件mnist_train_lmdb与mnist_test_lmbd的路径。
启动训练文件
新建bat文件,分别对应 的是caffe.exe和lenet_solver.prototxt的文件路径。双击训练。
E:/caffe/caffe/scripts/build/tools/Release/caffe.exe train --solver=E:/caffe/caffe/examples/mnist/lenet_solver.prototxt
pause
运行结束后,根据刚刚在solver文件里的路径就可以看到训练好的模型了。
一共包含4个文件:
lenet_iter_10000.caffemodel 和 lenet_iter_5000.caffemodel: 这两个文件是最终生成的caffemodel分类模型;
lenet_iter_10000.solverstate 和 lenet_iter_5000.solverstate : 这两个文件是记录当前训练状态信息文件。在跑训练模型的时候遇到断电等异常情况导致训练中断,再次训练的时候就不必浪费时间从头开始训练,只需要调用 .solverstate文件,从上次训练中断的位置处继续训练即可。
测试模型
在caffe-master目录下新建一个test-mnist.bat的脚本文件,输入以下内容:
E:/caffe/caffe/scripts/build/tools/Release/caffe.exe test --model=./examples/mnist/lenet_train_test.prototxt -weights=./examples/mnist/lenet/_iter_10000.caffemodel
pause
同样找到caffe.exe和生成的模型文件位置,自行修改。然后双击运行。