MNIST,一个经典的手写数字的图像数字库,由纽约大学的Yann LeCun教授整理,包含60000个训练样本和10000个测试样本,图片大小为28*28,在Caffe上配置的第一个案例。用的网络模型是LeNet,它是公认在数字分类任务上效果很好的网络。实验中在原始 LeNet基础上做了一点改动,对于神经元的激活,用ReLU替换了sigmoid。
参考文章:
http://blog.csdn.net/lynnandwei/article/details/43273077
http://blog.csdn.net/fly_egg/article/details/53309256
http://blog.csdn.net/u013534498/article/details/51340396
1首先,获取minist的数据包。
cd $CAFFE_ROOT./data/mnist/get_mnist.sh
然后
./examples/mnist/create_mnist.sh
利用caffe-master/build/examples/mnist/的convert_mnist_data.bin工具,将mnist date转化为可用的lmdb格式的文件。并将新生成的2个文件mnist-train-lmdb 和 mnist-test-lmdb放于create_mnist.sh同目录下。
当然,也可以根据需要用它生成leveldb格式的文件,只需要修改BACKEND=“leveldb”即可,目前所学到的有这两种常用的格式。
2.然后是训练部分
一个caffe的工程主要包含两个部分:网络模型,参数配置,分别对应*.prototxt ,*_solver.prototxt文件。
在该文件中定义了一些与模型训练有关的参数,包括初始学习率、momentum、权重衰减系数、最大迭代数、模型生成路径(snapshot_prefix)、使用cpu还是gpu等参数。可根据需要进行修改。
如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU 改为 solver_mode:CPU
然后./examples/mnist/train_lenet.sh
由于不知道是硬件菜还是only CPU的原因,训练十分慢(15min)……
训练完生成四个文件
lenet_iter_10000.caffemodel lenet_iter_10000.solverstate lenet_iter_5000.caffemodel lenet_iter_5000.solverstate
其中两个caffemodel文件lenet_iter_5000.caffemodel与lenet_iter_10000.caffemodel为我们测试时所需要的,它们分别存放着程序迭代5000次与10000次后网络的参数。
3.使用模型进行测试
/build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel
test:表示对训练好的模型进行Testing,而不是training。其他参数包括train, time, device_query。
-model=XXX:指定模型prototxt文件.GPU的话需要在后面加上 -gpu=0
或者是编写脚本,cd到 ./caffe/examples/mnist
touch test_lenet.sh #生成.sh文件
sudo vim test_lenet.sh
#进入.sh文件键入内容
#键入的内容为
#!/usr/bin/env
sh
"空行"
./build/tools/caffe test --model=examples/mnist/lenet_train_test.prototxt --weights=examples/mnist/lenet_iter_10000.caffemodel
-iterations 100
然后返回CAFFE_ROOT
sudo sh ./examples/mnist/test_lenet.sh
最后的话应该会输出
I1111 21:11:52.804616 5582 caffe.cpp:330] accuracy = 0.9868
I1111 21:11:52.804626 5582 caffe.cpp:330] loss = 0.0417311 (* 1 = 0.0417311 loss)