У меня вопрос об обратной функции в слое потерь Caffe. Я видел реализацию евклидова слоя потерь по адресу: https://github.com/BVLC/caffe/blob/master/examples/pycaffe/layers/pyloss.py
В конце функция назад определяется следующим образом:
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 для целей? Я подумал, что нам не нужно назначать какие-либо значения для bottom [1] .diff для целей.
Если у меня проблема с несколькими метками, как я могу обновить код?