Deep learning 如何获得Caffe中多标签分类的每个类别的概率
我正在多标签数据集上训练一个网络 我的培训文件如下所示:Deep learning 如何获得Caffe中多标签分类的每个类别的概率,deep-learning,caffe,Deep Learning,Caffe,我正在多标签数据集上训练一个网络 我的培训文件如下所示: img1 1 0 1 0 0 0 0 1 .... 1 ... ... imgN 0 1 0 1 0 1 0 0 .... 0 通过阅读教程,我了解到我必须使用SigmoidCrossEntropyLoss层 我的问题是,在培训之后,我需要使用哪个层来使用extract_feat.bin脚本提取每个标签的概率 贝娄我写了我网络的最后一层 谢谢大家! layer { name: "fc8-1" type: "InnerProduc
img1 1 0 1 0 0 0 0 1 .... 1
...
...
imgN 0 1 0 1 0 1 0 0 .... 0
通过阅读教程,我了解到我必须使用SigmoidCrossEntropyLoss层
我的问题是,在培训之后,我需要使用哪个层来使用extract_feat.bin脚本提取每个标签的概率
贝娄我写了我网络的最后一层
谢谢大家!
layer {
name: "fc8-1"
type: "InnerProduct"
bottom: "fc7"
top: "fc8-1"
inner_product_param {
num_output: 12400
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
value: 0.1
}
}
}
layer {
name: "loss"
type: "SigmoidCrossEntropyLoss"
bottom: "fc8-1"
bottom: "label"
top: "loss"
}
当使用“SigmoidCrossEntropy”
损耗层进行培训时,您需要使用简单的“Sigmoid”
层替换损耗层,以进行测试:
layer {
type: "Sigmoid"
bottom: "fc8-1"
top: "class_prob"
name: "class_prob"
}
您的测试时间输出应为12400维向量(每个输入)。范围内的所有条目均表示类别概率。当使用“SigmoidCrossEntropy”
损失层进行培训时,您需要使用简单的“Sigmoid”
层替换损失层以进行测试时间:
layer {
type: "Sigmoid"
bottom: "fc8-1"
top: "class_prob"
name: "class_prob"
}
您的测试时间输出应该是12400维向量(每个输入)。范围内的所有条目都
[0..1]
表示类概率。为什么fc8-1有num_输出:12400如果您只有8个二进制标签???Hi Shai,这只是我如何拥有培训文件的一个示例。真正的一个有12400个标签/图像。我将编辑我的帖子以避免混淆。谢谢大家!@Shai,我想实现的是提取概率,然后设置一个阈值或其他东西来获得测试图像的相关标签。非常感谢。为什么fc8-1有num_输出:12400如果你只有8个二进制标签???Hi@Shai,这只是我如何拥有我的培训文件的一个例子。真正的一个有12400个标签/图像。我将编辑我的帖子以避免混淆。谢谢大家!@Shai,我想实现的是提取概率,然后设置一个阈值或其他东西来获得测试图像的相关标签。非常感谢。当所有值接近0.50时,解释是什么?(介于0.46和0.59之间)。我不确定我是否做得很好,但我做的最后一次训练,失利从2开始,然后下降到0.28左右。我认为这是一个很好的学习,但我不明白当所有值接近0.50时,解释是什么?(介于0.46和0.59之间)。我不确定我是否做得很好,但我做的最后一次训练,失利从2开始,然后下降到0.28左右。我认为这是一个很好的学习,但我不能理解