Как штрафовать потерю одного класса больше, чем другого в тензорном потоке для многоклассовой задачи? - PullRequest
0 голосов
/ 18 сентября 2018

Допустим, у моей модели есть два класса: Класс 1 и Класс 2. И класс 1, и класс 2 имеют одинаковое количество данных обучения и тестирования.Но я хочу оштрафовать потерю класса 1 больше, чем класса 2, чтобы у одного класса было меньше ложных срабатываний, чем у другого ( Я хочу, чтобы модель показала лучшие результаты для одного класса, чем для другого ).

Как мне добиться этого в Tensorflow ?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

То, что вы ищете, вероятно, weighted_cross_entropy.
Он дает очень тесно связанную контекстную информацию, похожую на ответ @Sazzad, но специфичную для TensorFlow. Цитировать документацию:

Это похоже на sigmoid_cross_entropy_with_logits() за исключением того, что pos_weight, позволяет обменивать отзыв и точность на утяжеление стоимости положительной ошибки относительно отрицательной ошибка.

Принимает дополнительный аргумент pos_weights. Также обратите внимание, что это только для двоичной классификации, которая имеет место в примере, который вы описали. Если бы кроме этих двух классов могли быть другие классы, это не сработало бы.

0 голосов
/ 18 сентября 2018

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

loss = ylogy + (1-y) log (1-y)

Здесь класс 0 и класс 1 имеюттот же вес в потере.Таким образом, вы можете дать больше, придать больший вес какой-то части.например,

loss = 5 * ylogy + (1-y) log (1-y)

Надеюсь, это ответ на ваш вопрос.

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