您的位置:首页 > 其它

基于ubuntu对于CIFRA-10进行训练学习

2017-07-13 10:17 120 查看
参考博客:http://blog.csdn.net/c406495762/article/details/67650370

1.深度学习中经常看到epoch、 iteration和batchsize,下面按自己的理解说说这三个的区别:

    (1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;

    (2)iteration:1个iteration等于使用batchsize个样本训练一次;

    (3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

    举个例子,训练集有1000个样本,batchsize=10,那么:

    训练完整个样本集需要:

    100次iteration,1次epoch。

根据上面的讲解,我们可以这样理解:

1次全部训练=1次epoch

样本总数(已知)=batchsize(可以设定,也是已知,因为可以通过在data层,也就是输入层指定)*iteration,batchsize表示一次处理多少张图片,在data层定义(人为可控)

从而求出来了iteration(迭代数)



这里说一下test_iter与test_interval的区别:

test_iter表示需要迭代的次数

test_interval,这个interval表示区间的意思,也就是,没进行test_interval次训练之后,就需要测试一次


2.跑cifra-10的例子的具体步骤:

step1:获取数据

cd ~/caffe

./data/cifar10/get_cifar10.sh

step2:图片格式转换和计算图片数据的均值

cd
~/caffe

./examples/cifar10/create_cifar10.sh

-------------------------在这里对于create_cifar10.sh的内容进行一下说明-----------------------

通过看create_cifar10.sh源代码可以看出来:

./build/examples/cifar10/convert_cifar_data.bin$DATA$EXAMPLE$DBTYPE

利用convert_cifar_data.bin,可以工具将/data/cifar10中的原始图片转换成lmdb文件并将其保存到/examples/cifar10文件中

之前这个脚本已经对于$DATA$EXAMPLE$DBTYPE进行了定义



EXAMPLE=examples/cifar10

DATA=data/cifar10

DBTYPE=lmdb

./build/tools/compute_image_mean
-backend=$DBTYPE
\ $EXAMPLE/cifar10_train_$DBTYPE$EXAMPLE/mean.binaryproto

利用这个工具,可以根据/examples/cifar10/cifar10_train_lmdb(刚刚生成的)文件计算出这些训练集图片数据的均值,

并将其保存到/examples/cifar10/mean.binaryproto文件中。

--------------对于compute_image_mean的说明————————————————

在训练过程中,caffe使用的均值数据格式是binaryproto,它是一个二进制格式文件。

作者为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面。

编译caffe后,生成的可执行文件放在 build/tools/ 目录下,我们可以直接在caffe根目录中使用如下指令:
build/tools/compute_image_mean my-caffe-project/img_train_lmdb my-caffe-project/mean.binaryproto
1
1

    带两个参数:

    第一个参数:my-caffe-project /img_train_lmdb , 表示需要计算均值的数据,格式为lmdb的训练数据。

    第二个参数:my-caffe-project /mean.binaryproto, 将计算出来的二进制格式结果保存到均值文件。

-----------------------------------------------------------------------------------------------

至此,一共生成了三个文件:cifar10_test_lmdb,cifar10_train_lmdb,mean.binaryproto。

cifar10_train_lmdb:用于Caffe训练的lmdb文件

cifar10_test_lmdb:用于Caffe测试的lmdb文件

mean.binaryproto:根据cifar10_train_lmdb计算出的图片数据均值

step3:建立prototxt,这个作者已经写好了,所以不用自己动手写,如果新建一个项目的话,prototxt文件是一个必须写的文件,

这个文件告诉caffe需要建立什么样的网络

step4:开始训练

cd ~/caffe

./examples/cifar10/train_quick.sh

-------------------对于train_quick.sh进行说明----------------

从下面的shell脚本文件中可以看出:使用caffe train指令根据cifar10_quick_solver.prototxt配置文件训练模型,随后在进行8次epochs之后学习率因子降低十分之一。
#!/usr/bin/env sh
set -e

TOOLS=./build/tools

$TOOLS/caffe train \
--solver=examples/cifar10/cifar10_quick_solver.prototxt $@

# reduce learning rate by factor of 10 after 8 epochs
$TOOLS/caffe train \
--solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \
--snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5 $@
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐