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