Caffe支持多种损失。然后对于反向传播阶段,一些斑点可能具有来自不同损失的多个梯度。 Caffe如何处理这个blob的渐变?
这不是caffe或任何其他深度学习工具的问题。这纯粹是一个数学问题:当你有几次损失时,你就会为每次损失分配loss_weight
,而净损失的总损失是所有损失的加权和。因此,为网络计算的梯度是损失加权和的梯度:没有需要积分的每个损耗梯度,而是单个损耗,它是损耗层的加权和。
当将一层的"Split"
引导到几层时,Caffe通常使用"top"
层(在你的例子中,"conv2"
的输出是"Split"
到"bottom"
和"auxiliary loss"
的"ip1"
)。
看看"Split"
layer的向后传播代码,你可以看到所有的top.diff
s总结为bottom.diff
。