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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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