我使用了经过预训练的GoogLeNet,然后针对二进制分类问题对其数据集进行了微调。验证数据集似乎给出了"loss3/top1" 98.5%。但是,当我在评估数据集上评估性能时,可以给我50%的准确性。无论我进行了什么更改train_val.prototxt,我都对deploy.prototxt进行了相同的更改,但是我不确定在这些行中应该进行哪些更改。

name: "GoogleNet"
layer {
  name: "data"
  type: "input"
  top: "data"
  input_param { shape: { dim:10 dim:3 dim:224 dim:224 } }
}


有什么建议么???

最佳答案

您无需在deploy.prototxt *中进一步更改任何内容,而只需将数据馈送到网络中即可。您必须以与转换训练/验证图像相同的方式转换评估图像。
例如,请参见classifier.py如何将输入图像放置在正确初始化的caffe.io.Transformer类中。

原型中的"Input"层只是一个声明,用于caffe根据形状为10×3×224×224的输入Blob分配内存。



*当然,您必须验证train_val.prototxtdeploy.prototxt完全相同(除了输入层和损失层):这包括确保层名称相同,因为caffe使用层名称来将“ caffemodel”文件中的权重分配给它加载的实际参数。名称不匹配会导致Caffe对某些图层使用随机权重。

07-24 09:53