2

我使用了预训练的 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 } }
}

有什么建议么???

4

1 回答 1

4

您不需要在deploy.prototxt* 中进一步更改任何内容,但需要更改将数据提供给网络的方式。您必须以与转换训练/验证图像相同的方式转换评估图像。
例如,请参阅如何classifier.py将输入图像放入正确初始化的caffe.io.Transformer类中。

"Input"您在 prototxt 中拥有 的层只是 caffe 根据形状为 10×3×224×224 的输入 blob 分配内存的声明。


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

于 2016-05-06T13:52:54.833 回答