赞
踩
有两种方式,一是卷积网络作为固定的特征提取器.拿到一个预训练好的卷积网络,去掉全连接层,吧其余的部分作为一个特征提取器.alex网络会计算一个4096D的特征向量,称之为cnn codes.有了这些特征很容易训练一个线性分类器.
另外一种方式是fine-tuning卷积网络,是本文主要介绍的内容.该方法中不仅替换掉了顶层的全连接层,而且会改变预训练网络中的权值数据.这里既可以改变全部的网络参数,也可以只改变其中一部分的参数.
使用已经训练过的模型参数,经过调整,改变模型的结构,重新开始训练,达到新的最优模型.如果原始的网络中没有新的层需要的层,那么就使用随机的权重.降低base_lr学习的速度,提高新引入的层的学习速度lr_mult.
caffe % ./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0
使用-weight会告知caffe,需要加载一个网络模型,然后再开始训练
可以下载其中预训练的模型来使用.model zoo
这里给出的建议是
1. 如果新的数据集比较小,和原始的数据集合类似,那么fine-tuning是不需要的.最好十一训练一个基于cnn codes的线性分类器
2. 如果新的数据集比较大,和原始的数据集合类似,因此可以自信的开始fine-tuning,而不必担心过拟合.
3. 如果新的数据集比较小,和原始的数据集合差异性比较大.最好是只训练一个线性分类器.从顶层开始线性分类器是不合适的,最好是从比较低的层开始训练一个SVM分类器.
4. 如果新的数据集比较小,和原始的数据集合差异性比较大.因此可以从头训练,但是有预训练的参数是有益的.
由预训练网络带的限制,我们需要遵循原始使用的网络结构,但是由于权重共享的使用,输出图像的大小是不受限制的.对于全连接层,仍然是可以的,因为全连接层可以转化为为卷积层.
训练速度最好降低,是的底层的网络的参数变化比较缓慢.
How transferable are features in deep neural networks? studies the transfer learning performance in detail, including some unintuitive findings about layer co-adaptations.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。