码迷,mamicode.com
首页 > 其他好文 > 详细

CNN transfer learning

时间:2015-09-22 21:46:58      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

http://cs231n.github.io/transfer-learning/

一 概念:

(1)learning from scratch  即学一个CNN网络with random initialization

  (2)  在新的学习任务中,可以利用现有训练好的imagenet网络提取特征,去掉最后一个分类的全连接层,在classifier层之前提取4096维的特征,这些特征称为CNN code

(3)在CNN网络结构中,前面的卷积层保留更多的普遍特征 generic features(edge detectors 或者corlor blob detectors),后面的卷积层包含更多的 task specific 特征

二 迁移学习的两种方法:

 (1)利用已有的model提取特征,后面再训练分类器,比如linear svm或者softmax classifier。

 (2)finetune 已有的model: 即在已训练好参数的CNN结构上,利用自己的数据进行back propagation, finetune网络已有的weights.

      (可以finetune 整个CNN ,也可以保持前面的一些层的参数不变,只finetune网络的高层部分,这样做可以防止过拟合)

三  迁移学习方法的选择:

    主要取决于数据集的大小,以及与之前预训练数据集的相关性

(1)数据集很小,与预训练数据集相似: 直接提特征,提最后一层的CNN code, 训练linear 分类器

 (2) 数据集很小,与预训练数据集不同: 在前面的网络层中提feature,训练线性分类器

(3)数据集很大,与预训练数据相似:finetune 整个网络层

(4)数据集很大,与预训练数据不同:可以learning from scratch,也可以在预训练的model上finetune

四 一些实用的建议:

(1)finetune的时候输入图片的大小不受限制,因为forward function的与输入的spatial 大小无关,只要stride能fit

(2)把需要finetune的网络层的学习率设低一点: 因为我们默认预训练的model的参数已经很好了,因此在finetune优化的时候采取小的学习率

CNN transfer learning

标签:

原文地址:http://www.cnblogs.com/cookcoder-mr/p/4830405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!