Нужна помощь в выборе функции потери - PullRequest
0 голосов
/ 05 мая 2019

Я использовал resnet50 для решения задачи классификации нескольких классов.Модель выводит вероятности для каждого класса.Какую функцию потерь я должен выбрать для моей модели?

После выбора двоичной кросс-энтропии: enter image description here

После выбора категориальной кросс-энтропии: enter image description here

Приведенные выше результаты относятся к одной и той же модели с разными функциями потерь. Предполагается, что эта модель классифицирует изображения на 26 классов, поэтому должна работать категориальная кросс-энтропия.Кроме того, в первом случае точность составляет около 96%, но потери очень высоки.Почему?

редактировать 2: Архитектура модели: enter image description here

enter image description here

enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 06 мая 2019

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

Я бы сказал, что причина, по которой вы видите высокую точность в первом (и в некоторой степени во втором) случае, в том, что вы переоснащаете себя. Первый плотный слой, который вы добавляете, содержит 8 миллионов параметров (!!!, чтобы увидеть, что делают model.summary()), и у вас есть только 70 000 изображений, чтобы обучить его с 8 эпохами. Этот архитектурный выбор очень требователен как к вычислительной мощности, так и к требованиям к данным. Вы также используете очень простой оптимизатор (SGD). Попробуйте использовать более мощный Adam.

Наконец, я немного удивлен, что вы выбрали 'sigmoid' функцию активации в выходном слое. Почему не более классический 'softmax'?

1 голос
/ 05 мая 2019

Для задачи классификации с несколькими классами вы используете потерю categorical_crossentropy, поскольку она совпадает с распределением вероятности истинного основания с тем, которое предсказано моделью.

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

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