深度学习系列

深度学习总结系列

solver.prototxt 参数解析

对于caffe 来讲solver为其运行控制的核心,控制着整个模型的运作方式。

solver.prototxt

solver.prototxt 为caffe配置文件,里面定义了各种参数包括学习率,权重衰减、动量值等:
net:"train_val.prototxt"
test_iter: 266
test_interval: 1000
base_lr: 0.001
display: 100
max_iter: 50000
lr_policy: "multistep"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0005
snapshot: 1000
snapshot_prefix: "models/facedet"
solver_mode: GPU
device_id: 0
debug_info: false
snapshot_after_train: true
test_initialization: true
average_loss: 10
stepvalue: 30000
stepvalue: 40000
stepvalue: 45000
iter_size: 2
type: "SGD"
eval_type: "detection"
ap_version: "11point"
show_per_class_result:true

参数解析

net: 训练验证模型文件路径。

test_iter: 表示每训练完成一定次数后进行模型效果验证时的测试迭代次数。其表示把验证集中所有图片全部测试完成所需要的迭代次数。假设验证集图片数为val_num,验证时的batchsize为v_bsz,则test_iter = ceiling(val_num/ v_bsz),向上取整。

test_interval: 表示训练迭代多少次进行一次验证测试。一次迭代即一个batch的图片通过网络正向传播和反向传播的整个过程。一般来说,我们需要将训练集中所有图片都训练一遍,再对网络的准确率进行测试,即test_interval = train_num / train_bsz,但是不绝对,也可以设为一整数,比如1000等。

base_lr: 表示网络的基础学习率。学习率过高可能导致loss无法收敛等问题。过低的学习率会使网络收敛慢,也有可能导致梯度消失。一般我们设置为0.001。学习率和训练时的batchsize有关系,一般来讲batchsize越大,学习率也可以设置大一些。

display: 每多少次显示一次训练相关参数和结果。
max_iter: 训练最大迭代次数。以训练集中图片被反复训练学习100-200遍为宜,该参数可以设置为max_iter = (train_num / train_bsz)* 150。

lr_policy: 学习率变化策略。
lr_policy可以设置为下面这些值,相应的学习率的计算为:
o - fixed: 保持base_lr固定不变.
o - step: 如果设置为step,则还需要设置一个stepsize, 返回 base_lr * gamma ^ (floor(iter / stepsize)),其中iter表示当前的迭代次数
o - exp: 返回base_lr * gamma ^ iter, iter为当前迭代次数
o - inv: 如果设置为inv,还需要设置一个power, 返回base_lr * (1 + gamma * iter) ^ (- power)
o - multistep: 如果设置为multistep,则还需要设置一个stepvalue。这个参数和step很相似,step是均匀等间隔变化,而multistep则是根据stepvalue值变化
o - poly: 学习率进行多项式误差, 返回 base_lr (1 - iter/max_iter) ^ (power)
o - sigmoid:学习率进行sigmod衰减,返回 base_lr ( 1/(1 + exp(-gamma * (iter - stepsize))))

gamma: 学习率变化比率。用于调整学习率的一个参数。
momentum: 本次模型权重梯度更新时,上一次梯度所占的权重,一般取值在0.5–0.99之间。通常设为0.9,momentum可以让使用SGD的深度学习方法更加稳定以及快速。

weight_decay: 权重衰减项,防止过拟合的一个参数。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般衡量模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也就大,从而可以降低模型复杂度。

snapshot: 每多少次保存一次模型文件。即caffemodel。
snapshot_prefix: 设置模型文件保存路径。
solver_mode: 设置使用GPU还是CPU进行学习训练。
device_id: GPU序列号,默认从0开始。
debug_info: 是否显示debug信息。
snapshot_after_train: 是否在训练结束后保存一个snapshot文件,便于以后可以在此基础上继续训练。

test_initialization: 确保内存可用并且输出loss的初始值。
average_loss: 显示loss为average_loss个loss的平均值。
iter_size: 每处理iter_size*batch_size张图片后进行一次梯度计算,这个参数可以规避由于gpu不足而导致的batch_size的限制,因为你可以用多个iteration做到很大的batch,即使单次batch有限。
stepvalue: 多少次时学习率递减。
type: 优化算法的选择,一共有六种可选:SGD、AdaDelta、AdaGrad、Adam、Nesterov和RMSProp。默认为SGD。
eval_type: 评价类型。
ap_version: 计算平均准确率的方法。有11point、MaxIntegral、Integral三种。
11point:是SSD在VOC2007中计算AP的方法,使用简单的均值计算
MaxIntegral:是VOC2012的最大值积分法
Integral:普通积分方法
show_per_class_result: 在终端输出每一类的AP(每一类的检测精度)信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值