Различия между F.relu (X) и torch.max (X, 0) - PullRequest
2 голосов
/ 06 апреля 2019

Я пытаюсь реализовать следующую функцию потери

enter image description here

Для меня самая прямолинейная реализация будет использовать torch.max

losses = torch.max(ap_distances - an_distances + margin, torch.Tensor([0]))

Однако я видел другие реализации на github с использованием F.relu

losses = F.relu(ap_distances - an_distances + margin)

Они дают одинаковый вывод, но мне интересно, есть ли принципиальная разница между этими двумя методами.

1 Ответ

0 голосов
/ 06 апреля 2019

torch.max не дифференцируется в соответствии с этим обсуждением .Функция потерь должна быть непрерывной и дифференцируемой для выполнения backprop.relu дифференцируемо, так как его можно аппроксимировать и, следовательно, использовать его в функции потерь.

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