【问题标题】:Caffe output layer number accuracyCaffe 输出层数精度
【发布时间】:2015-11-21 17:13:35
【问题描述】:

我已修改 Caffe MNIST example 以对 3 类图像进行分类。我注意到的一件事是,如果我将输出层数指定为 3,那么我的测试准确度会急剧下降 - 降至 40% 的低范围。但是,如果 I +1 并且有 4 个输出层,则结果在 95% 范围内。
我在我的数据集中添加了一个额外的图像类(所以 4 个类)并注意到同样的事情 - 如果输出层的数量与类的数量相同,那么结果很糟糕,如果它是相同的 +1,然后效果非常好。

  inner_product_param {
    num_output: 3
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"

有人知道这是为什么吗?我注意到,当我在测试集的图像上使用我用C++ example code 训练的模型时,它会抱怨我已经告诉它存在 4 个类并且我只提供了 3 个类的标签我的标签文件。如果我发明了一个标签并将其添加到文件中,我可以让程序运行,但是无论我给它什么图像,它都只会返回概率为 1.0 的类之一。

【问题讨论】:

  • 在训练期间,您使用什么标签? 1,2,3 还是 0,1,2 ?
  • 在第一组中,我使用 1、2、3 对其进行训练,当我添加额外的图像类别时,我将其设为 0,因此它是 0、1、2、3。
  • 您必须使用 0,1,2 进行训练 - 因为标签用作输出概率向量的索引。因此,如果您有 3 个输出,则标签必须是 0、1、2。
  • 啊,问题解决了,再次感谢!

标签: machine-learning computer-vision neural-network deep-learning caffe


【解决方案1】:

请务必注意,在微调和/或更改标签数量时,输入标签必须始终从 0 开始,因为它们在计算时用作输出概率向量的索引损失。
因此,如果你有

 inner_product_params {
   num_output: 3
 }

您必须只有训练标签 0,1 和 2。

如果您使用带有标签 1、2、3 的 num_output: 3,caffe 无法表示标签 3,实际上有一条与标签 0 对应的冗余行未使用。
正如您所观察到的,当更改为 num_output: 4 时,caffe 再次能够表示标签 3 并且结果有所改善,但您仍然在参数矩阵中有一个未使用的行。

【讨论】:

  • 回归也是这样吗?我的回归问题中有 4 个类,但我只使用了一个输出神经元。可以吗?你可以在stackoverflow.com/questions/39756886/…看到我的问题你能指导我真正的问题是什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多