fine-tuning介绍

在深度学习过程中,获取数据集后,在训练自己的网络之前,用别人现有的网络进行fine-tuning(微调),然后训练。在实践中,由于数据集不够大,很少有人从头开始训练网络,常见的做法是使用预训练的网络来重新fine-tuning(微调),或者当做特征提取器。fine-tuning是迁移学习的一种手段(方法)。

Transfer Learning Definition

Ability of a system to recognize and apply knowledge and skills learned in previous domains/tasks to novel domains/tasks.

译:一种识别并应用先前领域/任务中学习到的知识和技能到新的领域/任务的系统能力。

例子:假设一个新的数据集,想做一下图片分类,这个数据集是关于Flowers的。然而,数据集中flower的类别很少,数据集中的数据也不多,发现从零训练开始训练CNN的效果很差,很容易过拟合。怎么办呢???于是想到了可以使用Transfer Learning,用别人已经训练好的Imagenet的模型来做,效果perfect。(例子来源于网络)

fine-tuning(微调)的步骤

主要有以下几步:

1)      获取已有网络的结构(prototxt)和网络参数(caffemodel),可以从网上下载经典的网络模型与网络结构

2)      准备好自己的数据集,一般情况下转换成为lmdb格式。

3)       关于均值的计算,可以直接用caffe中的 make_imagenet_mean.sh文件进行计算,有的网络结构种不含有这个参数。

4)      根据的自己的需要将最后的全连接的层该为自己所需要的输出,比如是10分类,最后的output就是10,同时改变最后一层的名字,只要不与原来的相同即可。

5)      最后是使用caffe的工具将fine-tuning的网络跑起来进行训练。
 

Transfer Learning关心的问题是:什么是“知识”以及如何更好地运用之前得到的“知识”。这可以有很多方法和手段。而fine-tune只是其中的一种手段。

参考:

迁移学习概述(Transfer Learning)

深度学习的fine-tuning过程

什么是fine-tuning?

猜你喜欢

转载自blog.csdn.net/Frank_LJiang/article/details/104388530