Потеря по пикселям - PullRequest
       49

Потеря по пикселям

1 голос
/ 22 марта 2019

Будут ли эти случаи иметь различный эффект во время обратного распространения: -

  1. суммирует потери по всем пикселям, а затем обратное распространение.
  2. средняя потеря по всем пикселям, затем backpropagate
  3. backpropagate индивидуально по всем пикселям.

Мои главные сомнения относительно числового значения, но эффект, который все это будет иметь.

1 Ответ

1 голос
/ 22 марта 2019

Разница между № 1 и 2 в основном: поскольку sum приведет к большему, чем mean, величина градиента от операции sum будет больше, но направление будет таким же.

Вот небольшая демонстрация, давайте сначала объявим необходимые переменные:

x = torch.tensor([4,1,3,7],dtype=torch.float32,requires_grad=True)
target = torch.tensor([4,2,5,4],dtype=torch.float32)

Теперь давайте вычислим градиент для x, используя L2 убыток с sum:

loss = ((x-target)**2).sum()
loss.backward()
print(x.grad)

Это выводит: tensor([ 0., -2., -4., 6.])

Теперь используется mean: (после сброса x град)

loss = ((x-target)**2).mean()
loss.backward()
print(x.grad)

И это выводит: tensor([ 0.0000, -0.5000, -1.0000, 1.5000]) Обратите внимание, что более поздние градиенты равны 1/4 от градиента sum, потому что здесь тензоры содержат 4 элемента.

О третьем варианте, если я вас правильно понимаю, это невозможно. Вы не можете выполнять обратное распространение до объединения отдельных ошибок пикселей в скаляр, используя sum, mean или что-либо еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...