【问题标题】:Output accuracy and loss from the same layer in caffecaffe中同一层的输出精度和损失
【发布时间】:2017-08-09 05:05:33
【问题描述】:

我写了一个自定义层,想同时输出accuracyloss。这可以通过以下方式使用caffe 来完成吗?

类似于:

layer {
name: ""
bottom: ""
top: loss1
top: loss2
top: accuracy
}

【问题讨论】:

    标签: neural-network deep-learning caffe loss


    【解决方案1】:

    您可以为图层设置任意数量的“顶部”。

    首先,您需要定义您的层计算的“顶部”数量。这是通过覆盖ExactNumBottomBlobs()来完成的。
    您的 LayerSetupReshape 方法还应考虑新的“顶部”数量,并设置和重塑这些“顶部”。

    请注意,由于您的层是损失层,因此每个“顶部”都必须具有 loss_weight 值:

    layer {
      name: "my_new_layer"
      type: "MyNewLayer"
      bottom: "x"
      top: "loss1"
      top: "loss2"
      top: "accuracy"
      loss_weight: 1
      loss_weight: 1.3 # you might want loss2 to have a bit more impact
      loss_weight: 0   # accuracy should not affect gradients...
    }
    

    您的图层类应该派生自LossLayer<Dtype> 类,而不是更抽象的Layer<Dtype> 类。

    有关如何在 caffe 中实现新层的更多信息,请参阅this page
    另请注意"SoftmaxWithLoss" 层有一个可选的第二个“顶部”,您可能需要查看该层的代码以了解其实现方式。

    【讨论】:

      猜你喜欢
      • 2015-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-14
      • 2017-03-14
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多