Caffe微调与从头开始训练

背景:假设我已经在datasetA上训练了一个CNN,并获得了caffeModelA

当前情况:新图片到达,我可以构建一个新的数据集,datasetB

问题:这两种情况会导致相同的Caffe模型吗?

  1. 合并datasetAdatasetB,然后从头开始训练网络。
  2. 通过仅在datasetB上训练,对现有的caffeModelA进行一些微调(如这里所解释的:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

这可能看起来是个愚蠢的问题,但我真的不确定答案。而且这非常重要,因为如果这两种方法能得到相同的结果,我可以通过执行第二种方法来节省时间。

注意:请记住这是同一个问题,所以这里不需要更改架构,我只是计划添加新的图像进行训练。


回答:

在Flickr风格的例子中,情况稍微更通用一些。他们使用了一个为不同分类任务训练的模型的第一层权重,并将其用于一个新任务,只训练一个新的最后一层,并对第一层进行一些微调(通过为那些预训练的层设置较低的学习率)。你的情况类似但更具体,你想使用预训练模型来训练完全相同的架构,用于完全相同的任务,但扩展了你的数据。

如果你问的是选项1.是否会产生与选项2.完全相同的模型(所有结果权重都相等),那么答案是否定的,很可能不会。

在选项2.中,网络会先在dataset A上训练若干次迭代,然后在dataset B上训练,然后再回到dataset A…依此类推(假设两者只是简单地拼接在一起)。而在选项1.中,网络会在dataset A上训练若干次迭代/轮次,然后继续在仅dataset B上学习若干次迭代/轮次,仅此而已。因此,求解器在两种选项中会看到不同的梯度序列,导致两个不同的模型。这是从严格的理论角度来说的。

如果你从实际角度问,这两种选项可能会得到非常相似的模型。你在dataset A上训练了多少个轮次(不是迭代)?假设是N个轮次,那么你可以安全地选择选项2.并在dataset B上继续训练你的现有模型,同样使用相同的轮次、学习率和批量大小。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注