我写了一个自定义咖啡层。但是在训练过程中它说“**层不需要向后计算”

I wrote a custom caffe layer. But during training it says "**layer does not need backward computation"

我定义了一个新的caffe层,包括new_layer.cppnew_layer.cunew_layer.hppcaffe.proto中的相关参数。当我训练模型时,它说:

new_layer does not need backward computation

不过,我确实定义了backward_cpubackward_gpu。我试图将 lr_mult 设置为不为 0。但是我应该在哪里为自定义层定义 lr_mult?除了这个,有没有其他方法可以让我的自定义层执行反向传播?

你可以通过设置

强制caffe反向传播
force_backward: true

在 net.prototxt 文件的开头。 caffe 的默认行为是仅在确定需要梯度时才向后计算。有时(尤其是当有自定义层时)这种启发式方法并不准确。通过设置 force_backward: true,caffe 将计算模型中所有层的梯度(只要可能)。
caffe.proto.

中的评论中阅读更多内容

关于 lr_mult: it is part of the param section of the layer - this section is defined for all layers in caffe.proto。因此,您只需将此子句添加到 net.prototxt:

中的图层定义中
force_backward: true   # cannot hurt...
layer {
  name: "my_layer"
  type: "MyLayerType"
  bottom: "input"
  top: "output"
  my_layer_param { ... }
  param: { lr_mult: 1 }  # there you go
}

您可以看到更多信息