使用cifar10训练

    xiaoxiao2021-04-14  68

    使用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" #讲解http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe // 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 解析日志文件 使用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,结果如下:

    转载请注明原文地址: https://ju.6miu.com/read-670216.html

    最新回复(0)