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左右。我认为这是一个很好的学习,但我不能理解