gpt4 book ai didi

c++ - 我写了一个自定义咖啡层。但在训练期间它说 "**layer does not need backward computation"

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:21 26 4
gpt4 key购买 nike

我定义了一个新的caffe层,包括new_layer.cppnew_layer.cunew_layer.hpp以及 caffe.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 : 它是层的 param 部分的一部分 - 此部分是为 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
}

可以查看更多信息here .

关于c++ - 我写了一个自定义咖啡层。但在训练期间它说 "**layer does not need backward computation",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57082177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com