上下文:假设我已经在datasetA
上训练了CNN,并获得了caffeModelA
。
当前情况:新图片到来,所以我可以建立一个新的数据集,datasetB
问题:这两种情况会导致相同的caffemodel吗?
合并datasetA
和datasetB
并从头开始训练网络。
通过仅在caffeModelA
上对其进行训练来对现有的datasetB
进行一些微调(如此处所述:http://caffe.berkeleyvision.org/gathered/examples/finetune_flickr_style.html)
这似乎是一个愚蠢的问题,但我不确定它的答案。这一点非常重要,因为如果两个近似值得出相同的结果,我可以通过执行数字2来节省时间。
注意:请记住,这是相同的问题,因此无需在此处更改架构,我只打算在培训中添加新图像。
最佳答案
在Flicker风格的示例中,情况更为普遍。他们使用为不同分类任务训练的模型中的第一层权重,并将其用于新任务,仅训练新的最后一层并微调第一层(通过为那些预先训练的层设置较低的学习率) )。您的情况类似,但更具体,您想使用预训练的模型来为完全相同的任务训练确切的体系结构,但要扩展数据。
如果您怀疑选项1是否会产生与选项2完全相同的模型(所有最终权重均相等),则否,很可能不会。
在选项2中,对网络进行了dataset A
的迭代训练,然后再进行dataset B
然后是dataset A
的迭代..依此类推(假设两者只是串联在一起)。
在选项1中,将对网络进行dataset A
上的某些迭代/纪元训练,然后稍后仅在dataset B
上继续学习迭代/纪元,仅此而已。因此,求解器将在两个选项中看到不同的梯度序列,从而产生两个不同的模型。从严格的理论角度来看。
如果从实用角度出发,这两种选择最终可能会采用非常相似的模型。您在dataset A
上训练了多少个时期(不是迭代)?例如说N个纪元,那么您可以放心使用Option 2,并在dataset B
上以相同的纪元数,相同的学习率和批量来进一步训练现有模型。