在caffe里微调VGG-16用于自己的问题
以SnailTyan的预训练模型VGG-16为例,记录一些我这个小白最开始不能理解的概念
GitHub:https://github.com/SnailTyan/caffe-model-zoo/tree/master/VGG16
caffe相关概念:
- caffe里面的预训练模型就是一个网络在很大的数据集上训练得到的结果。.caffemodel文件里面保存着网络的结构和参数(从零开始开始训练过程中用snapshot得到的也是这个)。加载预训练模型和从零开始训练的根本区别就是初始权重。一个是加载一个包含权重的文件(caffemodel),另一个是以某种方式初始化权重。
- 做微调时,没有额外新的配置文件,唯一要做的就是修改用于预训练的配置文件(solver.prototxt & train_val.prototxt),使他们更适合做微调。
微调(finetune)概念:
- 什么时候应该使用别人的预训练模型?:
最好是想干的事和预训练模型所基于的问题比较相似,这样预训练模型里面的基本feature才有用,才比较有可能靠自己比较少的数据练出一个还凑合的模型。
具体操作:
- 加快靠后的全连接层的学习率。对于VGG,就是最后两个全连接层
方法:设置lr_mult 和decay_mult参数</