我对 vgg-16 进行了微调以进行二元分类。我使用 sigmoidLoss 层作为损失函数。
为了测试模型,我编写了一个 python 文件,在其中使用图像加载模型并使用以下命令获取输出:
out = net.forward()
我的疑问是我应该从 Sigmoid 层还是 SigmoidLoss 层获取输出。 2层之间有什么区别。
我的输出实际上是输入图像属于 1 类的概率。**
最佳答案
为了对测试集进行预测,您可以通过修改原始prototxt来创建单独的部署prototxt。
以下是相同的步骤
- 删除用于训练的数据层,就分类而言,我们不再为数据提供标签。
- 删除任何依赖于数据标签的层。
- 设置网络以接受数据。
- 让网络输出结果。
您可以在这里阅读更多相关信息:deploy prototxt
否则,您可以添加
包括 {
阶段:训练
}
到您的 SigmoidWithLoss 层,以便在测试网络时不使用它。要进行预测,只需检查 Sigmoid 层的输出即可。
关于python - PyCaffe 输出层用于测试二元分类模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883603/