使用cifar进行训练

使用cifar10训练

1. 参数设置

net: "examples/cifar10/cifar10_quick_train_test.prototxt" #训练和测试网络的配置文件
test_iter: 100 #进行一次测试需要的迭代次数,因为测试时,batch为100,一共10000张测试图片所以此处为100
test_interval: 500 #测试间隔
base_lr: 0.001 #基础学习率,每一层的学习率是base_lr的倍数
momentum: 0.9 #动量,,一般取值在0.5--0.99之间。通常设为0.9,momentum可以让使用SGD的深度学习方法更加稳定以及快速
weight_decay: 0.004 #权重衰减项,防止过拟合的一个参数 
# The learning rate policy
lr_policy: "fixed" 
// lr_policy设置参数:  
                    //- fixed:   保持base_lr不变.  
                    //- step:    如果设置为step,则还需要设置一个stepsize,  返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数  
                    //- exp:     返回base_lr * gamma ^ iter, iter为当前迭代次数  
                    //- inv:      如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (- power)  
                    //- multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据                                 stepvalue值变化  
                    //- poly:     学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)  
                    //- sigmoid: 学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))
#gamma: 0.1          //学习率变化的比率  
#stepsize: 3000      //每迭代3000次,调整一次学习率   
# Display every 100 iterations
display: 100 #每100次显示一次
# The maximum number of iterations
max_iter: 10000 
# snapshot intermediate results
snapshot: 10000 #每迭代10000次,保存一次训练权值
snapshot_format: HDF5
snapshot_prefix: "examples/cifar10/cifar10_quick" #保存权值路径
# solver mode: CPU or GPU
solver_mode: GPU

2. 使用snapshot来继续网络训练

我们在前面的训练中通过snapshot可以将迭代到一定次数的模型保存下来,因为在训练刚开始我们可以
设置比较大一点的学习率,然后在看到有收敛的趋势时,可以将在之前模型训练的基础上,调小学习率继续
训练,这样可以达到一个比较好的收敛效果。
具体只要按下面训练设置就可以了。如果载入成功,Ubuntu的终端会显示的迭代次数是从4000开始的。

$TOOLS/caffe train \
  --solver=examples/cifar10/cifar10_quick_solver_lr1.prototxt \
  --snapshot=examples/cifar10/cifar10_quick_iter_4000.solverstate.h5

3. 通过caffe自带的脚本绘制loss和accuracy等

在训练过程中画出accuracy 和loss曲线能够更直观的观察网络训练的状态,以便更好的优化网络的训练。具体操作步骤如下:
1. 将训练日志保存

$TOOLS/caffe train --solver=$SOVEFILEPROTOX 2>&1 |tee out.log
  1. 解析日志文件
    使用tools/extra文件夹下的parse_log.py来解析日志。命令如下:
 python ./tools/extra/parse_log.py ./out.log ./

行结束之后会发现在你保存的路径中会生成两个文件out.log.train和out.log.test。
3. 绘制曲线

Supported chart types:
    0: Test accuracy  vs. Iters
    1: Test accuracy  vs. Seconds
    2: Test loss  vs. Iters
    3: Test loss  vs. Seconds
    4: Train learning rate  vs. Iters
    5: Train learning rate  vs. Seconds
    6: Train loss  vs. Iters
    7: Train loss  vs. Seconds

我们要画一下train loss,则使用:

 python ./tools/extra/plot_training_log.py 6 trainloss.png ./out.log

结果如下:
这里写图片描述
我们可以看出train_loss收敛在0.5左右。
现在让我们继续画一个accuracy,结果如下:
这里写图片描述

4.对比实验

下周任务吧,机器子太慢,慢慢等吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值