caffe的mnist小练习

这是一个手写数字分类的小练习,训练集是一些带标签的手写数字,测试集是一些手写数字,目的是将这些手写数字准确地分到对应的类中。

1.数据准备
下载数据:找到caffe/data/mnist文件夹,运行文件

caffe的mnist小练习

接着出现:
caffe的mnist小练习

运行完毕后有四个文件:
caffe的mnist小练习
数据转换:将文件数据转化为lmdb:
注意此时要在caffe根目录下加权限运行,否则可能无法执行:
caffe的mnist小练习
caffe的mnist小练习


caffe的mnist小练习
接着在examples/mnist里面就出现了mnist_test_lmdb和mnist_train_lmdb两个文件
caffe的mnist小练习


caffe的mnist小练习

这就是数据集了。


2.网络结构:
这里是LeNet的网络结构,可以将examples/mnist/lenet_train_test.prototxt.的内容放到 Netscope(http://ethereon.github.io/netscope/#/editor)里面查看
网络结构:
caffe的mnist小练习

caffe的mnist小练习

caffe的mnist小练习



caffe的mnist小练习


caffe的mnist小练习

可视化的网络结构,还可以直接观察到每一层的参数,这是一个简单的神经网络结构,从上到下,数据集,接着卷积层--池化层---卷积层---池化层---全连接层innerproduct+relu--innerproduct----最后计算loss,用softmax分到类中


3.训练参数

examples/mnist/lenet_solver.prototxt

caffe的mnist小练习

建立model文件夹并修改lenet_solver.prototxt 中的snapshot_prefix
caffe的mnist小练习




4.训练网络
这时候就可以通过运行 train_lenet.sh脚本来训练网络了
在caffe根目录下输入caffe的mnist小练习接着就开始初始化网络:

caffe的mnist小练习


create mnist layer
caffe的mnist小练习

接着创建系列的网络层:
caffe的mnist小练习


创建完成:
caffe的mnist小练习

接着创建训练网络:
caffe的mnist小练习

开始优化网络:
caffe的mnist小练习


接着开始迭代训练:
caffe的mnist小练习


第 5000次迭代后,建立了个model存在设置的目录下
caffe的mnist小练习

在10000次迭代后,同样建立model,且训练停止:caffe的mnist小练习

caffe的mnist小练习

最终的accuracy:0.9909,loss:0.0263691





5.测试模型:
调用训练好的模型进行测试
caffe根目录下:用gpu的话:/caffe$ ./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/model/lenet_iter_10000.caffemodel -gpu=0
否则:/caffe$ ./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/model/lenet_iter_10000.caffemodel
接着就看到结果:



caffe的mnist小练习




使用10000次迭代后的模型进行测试的结果。


note:作为小白,该文档仅供参考,也作为自己练习的记录,有不对的地方请指正,更多信息参考caffe官网。
给自己加油~~~~~

版权声明:本文原创,转载请注明出处!
http://blog.****.net/u012581616/article/details/79557517