用于测试二元分类模型的 PyCaffe 输出层

PyCaffe output layer for testing binary classification model

我为二进制 class 化微调了 vgg-16。我使用 sigmoidLoss 层作为损失函数。

为了测试模型,我编写了一个 python 文件,我在其中加载了带有图像的模型并使用 :

获得了输出

out = net.forward()

我的疑问是我应该从 Sigmoid 或 SigmoidLoss 层获取输出。 和2层有什么区别

我的输出实际上是输入图像为 class 1 的概率。**

SigmoidWithLoss层每批输出一个单个数字代表损失w.r.t地面实况标签。

另一方面,Sigmoid 层输出批处理中每个输入的概率值。此输出不需要计算真实标签。

如果您正在寻找每个输入的概率,您应该查看 Sigmoid 层的输出

为了对测试集进行预测,您可以通过修改原始 prototxt 来创建一个单独的部署 prototxt。

以下是相同的步骤

  • 删除用于训练的数据层,至于在分类的情况下,我们不再为我们的数据提供标签。
  • 删除任何依赖于数据标签的图层。
  • 设置网络以接受数据。
  • 让网络输出结果。

您可以在此处阅读更多相关信息:deploy prototxt

否则,您可以添加
包括 { 阶段:火车 }

到您的 SigmoidWithLoss 层,以便在测试网络时不使用它。要进行预测,只需检查 Sigmoid 层的输出即可。