caffe学习笔记:mnist数据集的训练和测试

最近一直在研究linux下的caffe,记录下自己在学习过程的一些步骤。

1、准备数据和训练

1、准备数据,在caffe的根目录下依次执行以下2个命令:

./data/mnist/get_mnist.sh   ##获取mnist数据集
./examples/mnist/create_mnist.sh  ##创建lmdb或者而是levedb文件

运行上面的2个指令后,在./examples/mnist文件夹下会多出两个文件夹。分别是mnist_test_lmdb以及mnist_train_lmdb文件夹,分别存放可用于测试和训练的lmdb的文件。
2、训练,在caffe的根目录下执行以下命令:

./examples/mnist/train_lenet.sh 

即可开始训练。
caffe学习笔记:mnist数据集的训练和测试_第1张图片
3、训练完成后,在./examples/mnist文件夹下会存储最后的caffemodel文件,存储的就是lenet训练后的网络的权值参数文件。

2、测试网络的模型参数的精度

在./examples/mnist文件夹下创建test_lenet.sh文件如下:

./build/tools/caffe test --model=examples/mnist/lenet_train_test.prototxt\
 --weights=examples/mnist/lenet_iter_10000.caffemodel

这里需要指定测试的网络结构,以及对应的参数。默认是完成100个batch,最后计算平均的loss以及精度,当然在这里也可以指定迭代的次数,以及用CPU还是GPU测试,具体可以执行caffe的help指令查看caffe的参数。
caffe学习笔记:mnist数据集的训练和测试_第2张图片

3、测试网络的正向和反向传播的时间

在./examples/mnist文件夹下创建test_lenet_time.sh文件如下:

./build/tools/caffe time -model=./examples/mnist/lenet_train_test.prototxt --iterations 1000  --gpu 0

指定网络结构,以及网络的模型,以及迭代的次数,最后计算的平均的时间,因为GPU和CPU情况下时间差异大,因此,需要显式指定在GPU下,如果默认是在CPU下测试的时间。具体的其他的参数可通过caffe的help指令查看。
caffe学习笔记:mnist数据集的训练和测试_第3张图片
这里不仅可以查看整个网络一次前向和反向的时间,也可以查看每个层一个前向和反向的平均时间。一般情况:前面的卷积层前向的时间多,因为前面的图像大,计算量大,到后面全连接的时候,图像小,计算量小;但是反向的时候,注意到前面的卷积时间少,因为卷积的参数少,反向的时间少,后面的全连接层的参数多,反向传输更新的时候,时间多。

后记

以上所有的sh文件其实都可以直接在命令行下,执行,不需要新建sh文件。可以直接将sh文件中的内容输入命令行也可以的。

你可能感兴趣的:(caffe学习笔记)