Deep learning 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:

我有一个关于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:
            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
。如果我理解正确,它应该保持为该层定义的
失重