用于测试二元分类模型的 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 层的输出即可。
我为二进制 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 层的输出即可。