Многоклассовая классификация с дискретным выходом: какую функцию потерь и активацию выбрать? - PullRequest
1 голос
/ 07 марта 2020

Я работаю с проблемой мультиклассовой классификации, используя последовательные модели Keras. В моем наборе данных выходной класс имеет одно из следующих значений: (1, 2, 3, 4, 5).

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

Однако я не думаю, что softmax и категориальная кросс-энтропия - правильный выбор в моем случае. В моем наборе данных выходные классы имеют определенную «дискретность» (или масштаб). Класс 1 - это «худший», а класс 5 - «лучший».

Скажем, если на конкретном входе c модель прогнозирует 2, а истинный класс равен 1 , это гораздо лучший прогноз, когда модель прогнозирует класс 5, а истинный класс равен 1.

Мне бы хотелось, чтобы функция потерь учитывала эти "мелкие ошибки" и не учитывала все ошибки точно так же.

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

1 Ответ

0 голосов
/ 19 марта 2020

Исходя из ваших требований, я настоятельно рекомендую вам создать функцию потери . Таким образом, вы можете обрабатывать результаты так, как вы хотели. В основном при создании вашей функции потери вам нужны только y_pred и y_true , затем возвращает это значение как Tensor .

Это также Стоит отметить, что при создании любых настраиваемых потерь , , оптимизатора и слоев . разрешено использовать только бэкэнд-операции Tensor Flow , так как использование таких библиотек, как Numpy приведет к компиляции ошибки .

Вот ссылка на Документацию в Tensor Flow при выполнении Custom Training в вашей модели.

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