我正在使用AlexNet来训练我自己的数据集。Caffe的示例代码中包含了
bvlc_reference_caffenet.caffemodelsolver.prototxttrain_val.prototxtdeploy.prototxt
当我使用以下命令进行训练时:
./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt
我想从bvlc_reference.caffenet.caffemodel中给定的权重开始训练。
我的问题是
-
我该怎么做?
-
从这些权重开始是个好主意吗?这样会不会让训练更快收敛?如果我的数据与ImageNet数据集大不相同,这样做会不会有问题?
回答:
1.
为了使用现有的.caffemodel
权重进行微调,你需要使用--weights
命令行参数:
./build/tools/caffe train --solver=models/bvlc_reference_caffenet/solver.prototxt --weights=models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
2.
在大多数情况下,微调网络是一种非常推荐的做法,即使输入图像与“ImageNet”照片有很大不同。
然而,你应该注意,在训练你即将使用的原始权重时,做出了一些(非常合理)的假设。你应该决定这些假设是否仍然适用于你的任务。
例如,大多数网络是使用图像及其水平翻转进行简单的数据增强来训练的。然而,如果你的任务是区分翻转的图像,你会发现微调非常困难。