我使用Caffe GoogleNet模型来训练我自己的数据(10k图像,2个类)。我在第400000次迭代时停止它,精度为~80%。
如果我运行以下命令:
./build/examples/cpp_classification/classification.bin
models/bvlc_googlenet/deploy.prototxt
models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
data/ilsvrc12/imagenet_mean.binaryproto
data/ilsvrc12/synset_words.txt
1.png
它每次给我一个不同的 - 显然是随机的 - 结果(即如果我运行n次,那么我得到n个不同的结果)。为什么?我的训练失败了吗?它是否仍然使用参考模型中的旧数据?
答案 0 :(得分:1)
我不认为这是培训的问题。即使训练数据不是,它也应该每次都给出相同(可能是错误的)输出。如果您得到随机结果,则表示权重未正确加载。
当您针对.prototxt加载.caffemodel时,caffe将加载原型中所有图层的权重,其名称与caffemodel中的名称相匹配。对于其他层,它将根据原型文档中的规范进行随机初始化(高斯xavier等)。
因此,现在最好的办法是检查模型是否使用您现在使用的相同原型进行训练。
我发现您使用的是GoogleNet原型和reference_caffenet caffemodel。这是故意的吗?
答案 1 :(得分:1)
如果要部署微调模型,则应检查两个主要内容:
输入:
还有一些 Fine-tune tricks和CS231n_transfer_learning对微调非常有用。