Machine learning Caffe:如果两层反向支撑渐变到同一个底部水滴,会发生什么?

Machine learning Caffe:如果两层反向支撑渐变到同一个底部水滴,会发生什么?,machine-learning,neural-network,deep-learning,caffe,gradient-descent,Machine Learning,Neural Network,Deep Learning,Caffe,Gradient Descent,我想知道如果我有一个层生成了一个底部斑点,它会被两个后续层进一步消耗,这两个层都会生成一些梯度来填充反向传播阶段中的bottom.diff。这两个渐变是否会相加形成最终渐变?或者,他们中只有一个人能活着?据我所知,Caffe层在填充一些计算的梯度之前需要将bottom.diff设置为全零,对吗?memset是否会清除另一层已计算的梯度?谢谢大家! 使用一个以上的损耗层并不是不寻常的,例如:它有三个损耗层在网络的不同深度“推动”梯度。 在caffe中,每个损耗层都有一个相关的功能:这个特定的组件如

我想知道如果我有一个层生成了一个底部斑点,它会被两个后续层进一步消耗,这两个层都会生成一些梯度来填充反向传播阶段中的bottom.diff。这两个渐变是否会相加形成最终渐变?或者,他们中只有一个人能活着?据我所知,Caffe层在填充一些计算的梯度之前需要将bottom.diff设置为全零,对吗?memset是否会清除另一层已计算的梯度?谢谢大家!

使用一个以上的损耗层并不是不寻常的,例如:它有三个损耗层在网络的不同深度“推动”梯度。
在caffe中,每个损耗层都有一个相关的功能:这个特定的组件如何对网络的损耗功能作出贡献。因此,如果您的网络有两个损失层,
Loss1
Loss1
则网络的总体损失为

Loss = loss_weight1*Loss1 + loss_weight2*Loss2
反向传播用于将
损耗的梯度
(总损耗)传播到网络中的所有层。链式法则将
损失的导数分解为偏导数,即每层的导数,通过偏导数传播梯度来获得整体效果。也就是说,通过使用
top.diff
和层的
backward()
函数来计算
bottom.diff
,不仅要考虑层的导数,还要考虑在
top.diff
中表示的所有更高层的效果

TL;DR
您可以有多个损耗层。Caffe(以及任何其他像样的深度学习框架)为您无缝地处理它