Количество единиц в последнем плотном слое при бинарной классификации - PullRequest
0 голосов
/ 11 июля 2020

Мой вопрос связан с этим здесь . Я использую набор данных о кошках и собаках. Итак, есть только эти два результата. Я нашел две реализации. Первый используется:

tf.keras.layers.Dense(1)

в качестве последнего уровня в модели. Второй реализация использует:

layers.Dense(2)

Теперь я не не понимаю этого. Что здесь правильного? Это то же самое и почему (я не понимаю, почему это должно быть таким же). Или в чем тут разница? Первое решение - моделирование кошки или собаки, второе решение - моделирование кошки, собаки или любого другого? Зачем это делается, если у нас есть только кошка и собака? Какое решение выбрать?

1 Ответ

0 голосов
/ 11 июля 2020

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

Двоичная классификация: в этом случае выходной слой имеет только один нейрон. По выходному сигналу единственного нейрона вы должны решить, кошка это или собака. Вы можете установить любой пороговый уровень для классификации вывода. Допустим, кошки обозначены как 0, а собаки - как 1, а ваше пороговое значение равно 0,5. Итак, если результат больше 0,5, то это собака, потому что оно ближе к 1, иначе это кошка. В этом случае для большинства случаев используется binary_crossentropy.

Категориальная классификация: количество выходных слоев точно такое же, как количество классов. На этот раз вам не разрешено помечать данные как 0 или 1. Форма метки должна быть такой же, как у выходного слоя. В вашем случае ваш выходной слой имеет два нейрона (для классов). Таким же образом вам придется маркировать свои данные. Для этого вам нужно будет закодировать данные вашей этикетки. Мы называем это «горячим кодированием». Например, кошки будут закодированы как (1,0), а собаки будут закодированы как (0,1). Теперь в вашем прогнозе будет два числа с плавающей запятой. Если первое число больше второго, это кошка, иначе это собака. Мы называем это числами - оценка уверенности. Скажем, для тестового изображения ваша модель предсказала (0,70, 0,30). Это означает, что ваша модель на 70% уверена, что это кошка, и на 30% - что это собака. Обратите внимание, что значение выходного слоя полностью зависит от активации вашего слоя. Чтобы узнать больше, прочтите о функциях активации.

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