Как выполнить SoftMax на выходах из нескольких моделей?

#python #tensorflow #deep-learning

Вопрос:

Я хочу классифицировать 8 классов.

Вместо создания классификатора 8 классов я создаю 8 двоичных классификаторов. Каждый двоичный классификатор отличает один класс от трех других классов. Например,(0 против 1 2 3 4 5 6 7) и (1 против 0 2 3 4 5 6 7), и т. д

Как я могу запустить SoftMax функцию, чтобы определить, какой классификатор предсказал «класс 0» с наибольшей уверенностью?

введите описание изображения здесь Кто-нибудь может помочь с кодами?

Комментарии:

1. Ваш вопрос не ясен. Что вы подразумеваете под 4 двоичными классификаторами? Не говорите, что у вас есть классы 0,1,2,3. У вас есть двоичный классификатор для 0/Not_0, другой для 1/Not_1 и т. Д. Ты это имел в виду?

2. @CrazyBrazilian да, я перефразирую его

3. Я прошу прощения, но это кажется неправильным. Основываясь на том, что вы говорите, у вас есть только один классификатор, который предсказывает 0. Вы не можете использовать softmax. softmax-это в основном нормализация для вашей многоклассовой классификации, чтобы убедиться, что вероятность равна 1

4. @CrazyBrazilian Я как бы добавляю диаграмму, чтобы помочь объяснить, чего я хочу достичь

5. @Leo у вас есть 4 двоичных классификатора или 8 двоичных классификаторов ?

Ответ №1:

Я написал другую диаграмму

введите описание изображения здесь

Теперь давайте посмотрим, что у вас есть, и посмотрим, нужен ли вам softmax.

Прежде всего, я предполагаю, что ваши классификаторы точно такие же.

Предположим, что вы протолкнете запись через свою модель, и вы получите следующее

P0=0,4 P_NOT_0=P1 P2 P3=0,6

P1=0,3 P_NOT_1=P0 P2 P3=0,7

P2=0,2 P_NOT_2=P0 P1 P3=0,8

P3=0,1 P_NOT_3=P0 P1 P2=0,9

Вы можете подумать, что я «подделал» числа, чтобы сделать P0 P1 P2 P3=1, но я этого не сделал. Другого возможного выхода нет.

Если ты мне не веришь, сделай это. Выберите значение для P0 и замените его во всех формулах. Затем сделайте то же самое для P1, P2 и P3. Вы увидите, что если P0 P1 P2 P3=1, вы не сможете сделать все формулы истинными.

В принципе, если все классификаторы одинаковы, значения P0, P1, P2 и P3 во всех формулах одинаковы.

А теперь вернемся к вашему вопросу. Вам не нужен softmax, потому что P1 P2 P3 P4 уже нормализован.

Я точно не знаю, что вы делаете, но если вы просто создаете модель классификации нескольких классов, почему бы не иметь один вывод на класс и, наконец, не использовать softmax?

Вам все еще нужна помощь в написании кода?

@andrey ( в комментариях ) также привнес несколько хороших моментов. Во-первых, всегда есть ошибка, а во-вторых, если вы используете сигмоид в качестве вывода каждого классификатора, они на самом деле не являются вероятностями, но идея все еще применима.

Комментарии:

1. о, извините, только что заметил, что теперь вы перешли на 8 классификаторов, а не на 4 классификатора. Опять же, если все эти классификаторы одинаковы, вклад, скажем, P0 в вероятность каждого классификатора в точности одинаков

2. пожалуйста, отрегулируйте P_NOT_3. И я сомневаюсь, что в реальной жизни p0 p1 p2 p3 равно 1: классификаторы не будут идеально предсказывать вероятности

3. спасибо @Andrew. это правильно ! Я не хотел вдаваться в подробности относительно реального значения сигмоидного вывода ( предполагая, что он его использует).

4. Я бы добавил небольшую ошибку к p0, p1, p2, p3, чтобы они не суммировались до 1. Это подчеркивало бы, что вопрос не является правильным

5. ага ! я согласен на 100% ! Я пытался привести пример высокого уровня.. но я все еще не уверен, какова конечная цель.. это кажется простой многоклассовой классификацией