2017-07-17 108 views
2

所以我正在学习如何使用Tensorflow来微调自定义数据集的Inception-v3模型。微调VS再培训

我发现了两个与此相关的教程。一个是关于“How to Retrain Inception's Final Layer for New Categories”,另一个是“ Train your own image classifier with Inception in TensorFlow with Fine tuning ”。

我在虚拟机上完成了第一个再培训教程,只花了2-3个小时就完成了。对于相同的花朵数据集,我正在做一个GPU上的第二个微调教程,花了大约一整天的时间来完成培训。

再培训和微调有什么区别?

我的印象是,他们都使用预先训练的Inception v3模型,删除旧的顶层,并在花卉照片上训练一个新的模型。 但我的理解可能是错误的。

回答

5

通常在ML文献我们称之为微调的过程:

  1. 保持训练模型。模型=特征提取器层+分类层
  2. 卸下分类层
  3. 附加新的分类层
  4. 重新训练整个模型的端至端。

这允许从特征提取层权重的良好配置开始,并因此在短时间内达到最佳值。

你可以考虑微调,就像开始一个新的列车的方法一样,对于你的砝码有一个很好的初始化方法(尽管你必须初始化新的分类层)。

当,相反,我们谈论重新训练模型的,我们通常所说的过程:

  1. 保持一个模型架构
  2. 改变最后分类层,以生产量要分类的课程
  3. 首尾相接训练模型。

在这种情况下,您不是从上面的好起点开始,而是从解决方案空间中的随机点开始。

这意味着您必须更长时间地训练模型,因为初始解决方案不如初始解决方案,即预训练模型提供的。

-1

在重新训练模型的情况下,所需时间比精细调整要少得多,而不是时间更长。