Deep learning Caffe损耗层-反向函数
我有一个关于Caffe损耗层中的后向函数的问题。 我在以下位置看到了欧几里德损失层的实现: 最后,向后功能定义如下:Deep learning Caffe损耗层-反向函数,deep-learning,caffe,loss,Deep Learning,Caffe,Loss,我有一个关于Caffe损耗层中的后向函数的问题。 我在以下位置看到了欧几里德损失层的实现: 最后,向后功能定义如下: def backward(self, top, propagate_down, bottom): for i in range(2): if not propagate_down[i]: continue if i == 0: sign = 1 else:
def backward(self, top, propagate_down, bottom):
for i in range(2):
if not propagate_down[i]:
continue
if i == 0:
sign = 1
else:
sign = -1
bottom[i].diff[...] = sign * self.diff / bottom[i].num
我知道bottom[0]表示预测值,bottom[1]表示目标值(基本事实)。你能帮我理解为什么符号表示预测为+1,表示目标为-1吗? 我认为我们不需要为目标的底部[1].diff分配任何值
如果我有多标签问题,如何更新代码 当
bottom[1]
是基本事实时,您应该期望propagate\u down[1]
为False
,因此不会向标签传播渐变。但是,如果您使用此损失层来比较两个可训练的斑点,您希望将梯度传播到两个
底部
s
这个符号只是由于这个特殊损失的导数,写下导数,你就会知道它来自哪里
这里我缺少的一件事是top[0]。diff
。如果我理解正确,它应该保持为该层定义的失重