caffe的solver理解

来源:互联网 发布:知乎为什么有那么多985 编辑:程序博客网 时间:2024/05/16 18:43
【一个iteration等于使用batchsize个样本训练一次】
【一个epoch等于使用训练集中全部样本训练一次】
【batchsize每次在训练集中取batchsize个样本训练】
【举个例子,训练集有1000个样本,batchsize=10,那么:】
【训练完整个样本集需要:】

【100次iteration,1次epoch。】

test_iter: 1000 一次测试需要的iter次数

test_interval: 4000 测试间隔,4000次iter后,进行一次测试

即,进行一次测试一共需要进行test_iter次迭代,每次迭代的数量是test的batchsize大小,即batchsize*test_iter=测试图片数量

test_initialization: false 【这个目前还不知道】

display: 40 40次iter显示一次结果

average_loss: 40 官方解释是:Display the loss averaged over the last average_loss iterations,这里即显示最近40次iter的平均loss,

【这个跟源码中的UpdateSmoothedLoss函数有关?这个函数将历史过程中的loss求平均可以减少loss震荡】

base_lr: 0.01 初始时候的学习率

lr_policy学习率调整策略
//    - fixed: always return base_lr.  
//    - step: return base_lr * gamma ^ (floor(iter / step))  
//    - exp: return base_lr * gamma ^ iter  
//    - inv: return base_lr * (1 + gamma * iter) ^ (- power)  
//    - multistep: similar to step but it allows non uniform steps defined by  
//      stepvalue  
//    - poly: the effective learning rate follows a polynomial decay, to be  
//      zero by the max_iter. return base_lr (1 - iter/max_iter) ^ (power)  
//    - sigmoid: the effective learning rate follows a sigmod decay  
//      return base_lr ( 1/(1 + exp(-gamma * (iter - stepsize)))) 

stepsize 作用如上(step策略时,stepsize次进行一次base_lr调整)

gamma 作用如上

max_iter 最大训练次数【注意,这个针对的是batchsize!一次iter前向传递batchsize个样本,可以联系我开头所说的】

【一个epoch需要的epoch_iter=样本所有图片数/batchsize】

【则一共有max_iter/epoch_iter个epoch】

momentum 动量项

#######caffe SGD 随机梯度下降小解释

对于一般的SGD
w<-w-a*dw,a是学习率
而带动量项的SGD
v<-b*v-a*dw
w<-w+v
就是利用dw和上一次权重的更新值来组合新的更新值v(初始v=a*dw?)
参考caffe SGD说明,以及BP算法的改进:http://blog.csdn.net/acdreamers/article/details/44657439



0 0