Почему эта сеть семантической сегментации не имеет слоя классификации softmax в Pytorch? - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь использовать следующую архитектуру CNN для семантической классификации пикселей. Код, который я использую: здесь

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

Я не смог найти софтмакс, используемый где-либо в скрипте. Здесь - статья, которую я читаю об этой архитектуре сегментации. Из рисунка 2 я вижу использование softmax. Поэтому я хотел бы выяснить, почему этого не хватает в сценарии. Любое понимание приветствуется.

1 Ответ

0 голосов
/ 08 января 2019

Вы используете довольно сложный код для обучения / вывода. Но если вы немного покопаетесь, то увидите, что функции потерь реализованы здесь , и ваша модель фактически обучена с использованием cross_entropy потерь. Глядя на документ:

Этот критерий объединяет log_softmax и nll_loss в одной функции.

Для числовой стабильности лучше "впитать" softmax в функцию потерь, а не явно вычислять ее по модели.
Это довольно распространенная практика, когда модель выводит «необработанные» прогнозы (также называемые «логитами»), а затем позволяет потере (так называемый критерий) делать softmax внутри. Если вам действительно нужны вероятности, вы можете добавить softmax поверх при развертывании вашей модели.

...