caffe中base_lr、blobs_lr和lr_policy

caffe调整学习率的.

base_lr是适用于所有层的学习率,而针对单个层,可以通过增加两个blobs_lr,用来调整该层的学习率.

一个调整weight的学习率,一个是调整偏执b的学习率。那么该层的学习率就变成了,base_lr*blobs_lr,base_lr*blobs_lr了。

base_lr: 0.01
lr_policy: "inv"
gamma: 0.0001
power: 0.75

这四行可以放在一起理解,用于学习率的设置。只要是梯度下降法来求解优化,都会有一个学习率,也叫步长。base_lr用于设置基础学习率,在迭代的过程中,可以对基础学习率进行调整。怎么样进行调整,就是调整的策略,由lr_policy来设置。

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))))

你可能感兴趣的:(caffe)