我使用了经过预训练的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.prototxt
和deploy.prototxt
完全相同(除了输入层和损失层):这包括确保层名称相同,因为caffe使用层名称来将“ caffemodel”文件中的权重分配给它加载的实际参数。名称不匹配会导致Caffe对某些图层使用随机权重。