Использование сигмоидального вывода для кросс-энтропийной потери на Pytorch

Я пытаюсь модифицировать Yolo v1 для работы с моей задачей, в которой каждый объект имеет только 1 класс. (например: объект не может быть одновременно кошкой и собакой)

Из-за архитектуры (другие выходные данные, такие как прогнозирование локализации, должны использоваться регрессией), поэтому сигмоид был применен к последнему выходу модели (f.sigmoid (почти_last_output)). И для классификации yolo 1 также использует MSE как потерю. Но насколько я знаю, MSE иногда не очень хорошо работает по сравнению с кросс-энтропией для одного-горячего, как то, что я хочу.

И конкретно: GT, как это: 0 0 0 0 1 (допустим, у нас всего 5 классов, у каждого только 1 класс, поэтому в них только одно число 1, конечно, это класс 5-й в этом примере)

и выходная модель в части классификации: 0.1 0.1 0.9 0.2 0.1

Я нашел несколько советов по использованию nn.BCE / nn.BCEWithLogitsLoss, но я думаю, что мне следует попросить здесь более правильные ответы, так как я плохо разбираюсь в математике и, возможно, я где-то ошибаюсь, поэтому просто попросите узнать больше и наверняка, что мне следует использовать правильно?

Источник: ledsshop.ru

Стиль жизни - Здоровье!