Caffe 学习笔记1
本文为原创作品,未经本人同意,禁止转载,禁止用于商业用途!本人对博客使用拥有最终解释权
欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing
这篇博客是caffe官网的一片例程吧,只是熟悉一下操作而已
http://caffe.berkeleyvision.org/gathered/examples/cifar10.html
1、准备数据
cd /home/wangshuo/caffe (这个路径为caffe安装路径)
./data/cifar10/get_cifar10.sh
./examples/cifar10/create_cifar10.sh
运行之后将会有图像均值二进制文件./mean.binaryproto和数据库文件./cifar10_test_lmdb和cifar10_train_lmdb文件夹
2、模型简介
Cifar10是一个由卷积层,池化层,非线性变换层,线性函数RELU,以及在顶端的局部对比归一化的线性分类器组成,该模型在/caffe/examples/cifar10文件夹下面,该文件为名称为cifar10_quick_train_test.prototxt
3、训练和测试该模型
当你写好的网络参数的,设置文件就可以运行train_quick.sh文件
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
train_quick.sh 是一个简单的脚本文件,打开它可以看到训练工具叫caffe执行训练操作,然后根据的参数是slover protobuf所设置的。
执行该脚本文件:输出:
I0317 21:52:48.945710 2008298256 net.cpp:74] Creating Layer conv1
I0317 21:52:48.945716 2008298256 net.cpp:84] conv1 <- data
I0317 21:52:48.945725 2008298256 net.cpp:110] conv1 -> conv1
I0317 21:52:49.298691 2008298256 net.cpp:125] Top shape: 100 32 32 32 (3276800)
I0317 21:52:49.298719 2008298256 net.cpp:151] conv1 needs backward computation.
这个信息告诉我们每一层的组成和输出形式,初始化完毕,开始训练。
I0317 21:52:49.309370 2008298256 net.cpp:166] Network initialization done.
I0317 21:52:49.309376 2008298256 net.cpp:167] Memory required for Data 23790808
I0317 21:52:49.309422 2008298256 solver.cpp:36] Solver scaffolding done.
I0317 21:52:49.309447 2008298256 solver.cpp:47] Solving CIFAR10_quick_train
根据设置的solver,每迭代100次就会输出训练的学习率和训练损失函数,每迭代500次会测试一次,输出准确率score 0和测试损失函数score 1
I0317 22:12:19.666914 2008298256 solver.cpp:87] Iteration 5000, Testing net
I0317 22:12:25.580330 2008298256 solver.cpp:114] Test score #0: 0.7533
I0317 22:12:25.580379 2008298256 solver.cpp:114] Test score #1: 0.739837
I0317 22:12:25.587262 2008298256 solver.cpp:130] Snapshotting to cifar10_quick_iter_5000
I0317 22:12:25.590215 2008298256 solver.cpp:137] Snapshotting solver state to cifar10_quick_iter_5000.solverstate
I0317 22:12:25.592813 2008298256 solver.cpp:81] Optimization Done.
最后得到这个模型的测试准确率达到75%,模型参数会被写到一个文件里头
cifar10_quick_iter_5000
4、其他
更改cifar*solver.prototxt文件,可以修改训练的方式,是用GPU还是用cpu
# solver mode: CPU or GPU
solver_mode: CPU
5、遇到的问题
问题:在执行create_cifar10.sh时,提示文件convert_cifar_data.bin不存在。
解决方法:上面命令./create_cifar10.sh必须在根目录下运行
参考:http://caffe.berkeleyvision.org/gathered/examples/cifar10.html