Какой должна быть функция потерь для задачи классификации в pytorch, если в выходном слое используется сигмоид - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь реализовать модель для задачи двоичной классификации.До сих пор я использовал функцию softmax (на выходном слое) вместе с функцией torch.NLLLoss для расчета потерь.Однако теперь я хочу использовать сигмоидную функцию (вместо softmax) на выходном слое.Если я сделаю это, я должен также изменить функцию потерь (на BCELoss или binary_cross_entropy ) или я все еще могу использовать функцию torch.NLLLoss?

1 Ответ

0 голосов
/ 03 октября 2018

Если вы используете функцию sigmoid, то вы можете выполнять только двоичную классификацию.Невозможно сделать мультиклассовую классификацию.Причина этого заключается в том, что функция sigmoid всегда возвращает значение в диапазоне от 0 до 1. Так, например, можно порогировать значение на 0,5 и разделить (или классифицировать) его на два класса на основе полученных значений.

Относительно целевой функции NLLLoss - Отрицательная логарифмическая потеря правдоподобия.Просто учится распределению данных.Так что это не проблема, если вы пытаетесь достичь этого во время тренировки.

...