最近,对caffe中新写的loss层进行测试时,出现了xxx does not need backward compution的问题,最终导致了模型无法训练,通过上网查找发现解决办法,在最后的loss层参数上添加loss_weight的值即可。
但是,新添加loss层的类函数的定义与实现与原有的loss层并没有区别,为什么其在训练时需要添加额外的差参数loss_weight呢?
原因:通过查看softmax_loss_layer.cpp发现,在类的LayerSetup函数中,首先实现了Loss类的LayerSetup,即LossLayer::LayerSetUp(bottom, top);,GridLossLayer继承自LossLayer,而LossLayer的LayerSetup中实现了loss_weight赋值。