Разница между плотным (2) и плотным (1) как последний слой бинарной классификации CNN? - PullRequest
0 голосов
/ 12 июня 2018

В CNN для двоичной классификации изображений должна быть форма вывода (количество изображений, 1) или (количество изображений, 2)?В частности, здесь есть 2 вида последнего слоя в CNN:

keras.layers.Dense(2, activation = 'softmax')(previousLayer)

или

keras.layers.Dense(1, activation = 'softmax')(previousLayer)

В первом случае для каждого изображения есть 2 выходных значения (вероятность принадлежности кгруппа 1 и вероятность принадлежности к группе 2).Во втором случае каждое изображение имеет только 1 выходное значение, которое является его меткой (0 или 1, метка = 1 означает, что оно принадлежит группе 1).

Какое из них правильное?Есть ли внутренняя разница?Я не хочу узнавать какие-либо объекты на этих изображениях, просто разделите их на 2 группы.

Большое спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

Это первое правильное решение:

keras.layers.Dense(2, activation = 'softmax')(previousLayer)

Обычно мы используем функцию активации softmax для выполнения задач классификации, а выходной шириной будет число категорий.Это означает, что если вы хотите классифицировать один объект на три категории с метками A, B или C, вам потребуется заставить слой Dense сгенерировать вывод с формой (None, 3).Затем вы можете использовать функцию потерь cross_entropy, чтобы вычислить LOSS, автоматически рассчитать градиент и выполнить процесс обратного распространения.

Если вы хотите сгенерировать только одно значение со слоем Dense, это означает, что вы получите тензор с формой (None, 1) - таким образом, он создает одно числовое значение, например, задачу regression.Вы используете значение вывода для представления категории.Ответ правильный, но не работает как общее решение задачи classification.

...