Сигмоид против Softmax CrossEntropy при обнаружении объектов - PullRequest
0 голосов
/ 10 декабря 2018

В настоящее время я работаю с твердотельным накопителем MobileNetv1 + для обнаружения объектов, но у меня возникают трудности с пониманием того, какую потерю использовать в части классификации.

В работе SSD Лю, Вей и соавт.они используют потерю softmax по доверию нескольких классов tf.nn.softmax_cross_entropy_with_logits.Тем не менее, я получаю гораздо лучшие результаты, используя потерю сигмовидной кишки от Tensorflow pipe tf.nn.sigmoid_cross_entropy_with_logits.

Мои вопросы:

  • В чем главное отличие?между обоими потерями для обнаружения объекта?Я не могу представить это мысленно.
  • Что может быть причиной такого несоответствия результатов с использованием разных потерь?

1 Ответ

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

Вы бы использовали кросс-энтропийную потерю softmax, если только один класс может быть "истинным".Основная истина для одного примера (например, одного изображения) в вашей задаче может выглядеть как [0,0,0,1,0,0].Эти 6 значений могут, например, представлять 6 различных классов, таких как ['cat', 'dog', 'house', 'fish', 'shoe', 'boat'].

. Конечным результатом вашей сети будет список «вероятностных» оценок для каждого скаляра в вашем выходном векторе.Вероятности будут суммироваться до 1, например, [0.05, 0.1, 0.15, 0.55, 0.15].

. Вы бы использовали функцию потери сигмовидной кишки, если проблема, которую вы пытаетесь решить, включает в себя вероятность того, что множественные значения будут "истинными"", например, истинная правда может быть [0,1,0,1,0,0].

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