【问题标题】:Caffe fine-tuning vs. starting from scratchCaffe 微调与从头开始
【发布时间】:2016-02-04 23:14:29
【问题描述】:

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

现状:新图片到了,所以我可以建立一个新的数据集,datasetB

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

  1. 合并 datasetAdatasetB 并从头开始训练网络。
  2. 对现有的caffeModelA 执行一些微调,方法是仅在 datasetB 上进行训练(如此处所述:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html

这似乎是一个愚蠢的问题,但我不确定它的答案。这非常重要,因为如果这两个近似值导致相同的结果,我可以通过执行第 2 项来节省时间。

注意:记住这是同一个问题,所以这里不需要改变架构,我只是打算在训练中添加新图像。

【问题讨论】:

    标签: machine-learning computer-vision caffe


    【解决方案1】:

    在 Flicker 样式的示例中,情况更为一般。他们使用为不同分类任务训练的模型中第一层的权重,并将其用于新任务,只训练新的最后一层并稍微微调第一层(通过为那些预训练的层设置低学习率)。您的案例类似但更具体,您希望使用预训练模型来训练完全相同的架构,但需要扩展您的数据。

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

    在选项 2 中,网络被训练为迭代 dataset A,然后是 dataset B,然后是 dataset A,依此类推(假设两者只是连接在一起)。 在选项 1 中,将在 dataset A 上对网络进行一些迭代/纪元训练,然后继续在 dataset B 上继续学习迭代/纪元,仅此而已。因此,求解器将在两个选项中看到不同的梯度序列,从而产生两个不同的模型。这是从严格的理论角度来看的。

    如果您从实际角度提问,这两个选项最终可能会得到非常相似的模型。您在 dataset A 上训练了多少 epochs(不是迭代)?假设 N epochs,那么您可以安全地使用选项 2。并在 dataset B 上进一步训练您现有的模型,以获得相同数量的 epochs 以及相同的学习率和批量大小.

    【讨论】:

    • 完美答案先生!我的直觉是渐变的顺序会有所不同,但我需要确认,你说服了我 :) 实际上这就是我现在的做法:从头开始 - 尽管结果可能非常相似 - 但也许值得给它一个实际的尝试和比较。非常感谢您的回答! (顺便说一句,我正在训练相当多的 epoch,50000)
    • @GuiemBosch 小心...caffe 是迭代,而不是时代。 epoch 数 = (batch size * num-iterations)/#training-samples.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2023-04-04
    • 2011-02-22
    相关资源
    最近更新 更多