我使用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个不同的结果)。为什么?我的训练会失败吗?它仍然使用参考模型中的旧数据吗?
最佳答案
我认为培训没有问题。即使没有训练数据,每次也应该给出相同的输出(可能是错误的)。如果获得随机结果,则表明权重未正确加载。
当您对.prototxt加载.caffemodel时,caffe将加载prototxt中名称与caffemodel中的图层匹配的所有图层的权重。对于其他层,它将进行随机初始化(根据prototxt中的规范,是高斯xavier等)。
因此,您现在要做的最好的事情就是检查模型是否使用与您现在使用的相同的原型来训练。
我看到您正在使用GoogleNet prototxt和reference_caffenet caffemodel。这是故意的吗?