在 GoogLeNet 中修改 Deploy.prototxt

Modifying Deploy.prototxt in GoogLeNet

我使用预训练的 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* 中进一步更改任何内容,但需要更改将数据提供给网络的方式。您 必须 以与变换 training/validation 图像相同的方式变换评估图像。
例如,参见 classifier.py 如何通过正确初始化的 caffe.io.Transformer class.

输入图像

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


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