fine-tuning的二三事

日常的应用中,我们会很经常遇到一个问题:

如何应用强大的model(比如ResNet)去训练我们自己的数据?

考虑到这样的几个事实:

  1. 通常我们自己的数据集都不会大(<1w)
  2. 从头开始训练耗时

解决方法就是fine-tuning.

方式

参考CS231的资料,有三种方式

  • ConvNet as fixed feature extractor. 其实这里有两种做法: (1) 使用最后一个fc layer之前的fc layer获得的特征,学习个线性分类器(比如SVM) (2) 重新训练最后一个fc layer
  • Fine-tuning the ConvNet. 固定前几层的参数,只对最后几层进行fine-tuning
  • Pretrained models. 这个其实和第二种是一个意思,不过比较极端,使用整个pre-trained的model作为初始化,然后fine-tuning整个网络而不是某些层

选择

考虑两个问题:

  • 你的数据集大小
  • 你的数据集和ImageNet(假设在ImageNet上训练的)的相似性

分为四种情况,解决方法基于的原则就是:

NN中的低层特征是比较generic的,比如说线、边缘的信息,高层特征是Dataset Specific的,基于此,如果你的数据集和ImageNet差异比较大,这个时候你应该尽可能的少用pre-trained model的高层特征.

  1. 数据集小(比如<5000),相似度高 这是最常见的情况,可以仅重新训练最后一层(fc layer)
  2. 数据集大(比如>10000),相似度高 fine-tuning后几层,保持前面几层不变或者干脆直接使用pre-trained model作为初始化,fine-tuning整个网络
  3. 数据集小,相似度低 小数据集没有办法进行多层或者整个网络的fine-tuning,建议保持前几层不动,fine-tuning后几层(效果可能也不会很好)
  4. 数据集大,相似度低 虽然相似度低,但是数据集大,可以和2一样处理

从上面我们可以看出,数据集大有优势,否则最好是数据集和原始的相似度比较高;如果出现数据集小同时相似度低的情况,这个时候去fine-tuning后几层未必会有比较好的效果.

Caffe中如何进行fine-tuning

Caffe做fine-tuning相对tensorflow很简单,只需要简单修改下配置文件就行了.

此处假设你的数据集比较小,同时相似度比较高,仅需重新训练最后一层(fc)的情况.

(1) 降低solver中lr和stepsize

这个很明显,因为相似度比较高我们可以期望原始获得的feature和需要的是很接近的,此时需要降低学习率(lr)和迭代次数(stepsize).

(2) 修改最后一层fc的名字,设置好lr_mult

应为需要训练最后一层,我们把之前的层的学习率设置的很低(比如0.001),或者你干脆设置为0,最后一层设置一定的学习率(比如0.01),所以需要乘以10.

(3) 训练

其实就已经改好了,是不是很简单,按照之前标准化的训练测试就好了

知乎上fine-tuning的介绍上有更加详细的介绍,可以移步去看.

参考

(1) NodYoung的博客

(2) CS231的transfer-learning

(3) 知乎上关于caffe下做fine-tuning的介绍

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏目标检测和深度学习

YOLO v3的tf+keras实现

1654
来自专栏MelonTeam专栏

全卷积神经网络 fcn 学习笔记

导语: 前段时间学习了一下全卷积神经网络fcn,现以笔记的形式总结学习的过程。主要包括四个部分: (1)caffe框架的搭建;(2)fcn原理介绍;(3)分析具...

5166
来自专栏利炳根的专栏

学习笔记CB010:递归神经网络、LSTM、自动抓取字幕

递归神经网络(RNN),时间递归神经网络(recurrent neural network),结构递归神经网络(recursive neural network...

5654
来自专栏CVer

经典卷积神经网络(CNN)结构可视化工具

本文将介绍一种在线网络工具,可用于可视化各种经典的卷积神经网络结构。学习Caffe的同学,一定很熟悉Netscope。它就是用来可视化Caffe的prototx...

740
来自专栏大数据挖掘DT机器学习

用libsvm进行回归预测

作者:kongmeng http://www.cnblogs.com/hdu-2010/p 最近因工作需要,学习了台湾大学林智仁(Lin Chih-Jen)教授...

3587
来自专栏CreateAMind

lecun-20161209-nips-能量模型GAN

第二部分视频预测个人觉得lecun论文不如这篇论文:运动信息向量的神经网络学习 code、ppt、视频ok

813
来自专栏机器学习实践二三事

使用RNN进行图像分类

使用CNN进行图像分类是很稀疏平常的,其实使用RNN也是可以的. 这篇介绍的就是使用RNN(LSTM/GRU)进行mnist的分类,对RNN不太了解的可以看...

3876
来自专栏专知

【前沿】NIPS2017贝叶斯生成对抗网络TensorFlow实现(附GAN资料下载)

导读 今年五月份康奈尔大学的 Andrew Gordon Wilson 和 Permutation Venture 的 Yunus Saatchi 提出了一个贝...

4198
来自专栏机器之心

资源 | NIPS 2017 Spotlight论文Bayesian GAN的TensorFlow实现

3178
来自专栏简书专栏

基于tensorflow+CNN的新闻文本分类

tensorflow是谷歌google的深度学习框架,tensor中文叫做张量,flow叫做流。 CNN是convolutional neural netwo...

1804

扫码关注云+社区