CNN之fine-tuning

fine-tuning:使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。

为什么要用fine-tuning?

自己从头训练卷积神经网络容易出现问题;而用fine-tuning能很快收敛到一个理想的状态。

怎么做?

复用相同层的权重,新定义层取随机权重初始值;调大新定义层的学习率,调小复用层学习率。

具体来说就是:如果层次不变,则只需修改输入输出即可;如果层次改变,就添加/删减层次。优先学习权放在新加层,每一层都有控制学习率的参数:blobs_lr,一般会把前面层学习率调低,最后新加层调高,甚至可以freeze前面的层次不动;一般来说,fine-tuning的前期loss下降非常快,中间会有一个瓶颈期,这个时候就需要有耐心了。学习率在solver处进行调整,记录中间结果(snapshot),以免出现意外。

你可能感兴趣的:(Deep,Learning)