Будет ли tenor.backward вычислять весь градиент в графе? - PullRequest
0 голосов
/ 20 декабря 2018

Я прочитал эти коды на github:

# loss1, loss2 belong to the same net
net.zero_grad()
loss1 = ...
loss2 = ...
loss1.backward()
loss2.backward()
optim.step()

, который не упоминается методом BP на официальном сайте pytorch, а официальная документация упоминает Computes the gradient of current tensor w.r.t. graph leaves. для tensor.backward.

Такдругие градиенты ожидают, что два тензора потерь не вычисляются?А какие тензоры не обновляются?

1 Ответ

0 голосов
/ 20 декабря 2018

loss.backwards() вычисляет градиенты для всех переменных на графике по функции потерь.Параметры обновляются в соответствии с накопленными градиентами в optim.step().В вашем коде вы распространяетесь дважды (по одному на каждую потерю), градиенты накапливаются, и только после накопления обоих градиентов параметры обновляются оптимизатором.

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