Что это значит, когда мой CNN имеет ноль ложных отрицаний?

#tensorflow #keras #conv-neural-network #false-positive

#tensorflow #keras #conv-нейронная сеть #ложноположительный результат

Вопрос:

Я работаю над сверточной нейронной сетью для классификации набора данных изображений с помощью двоичных меток (0 или 1). При обучении сети каждая эпоха заканчивается нулевыми ложными отрицаниями, означает ли это, что моя сеть просто классифицирует все как 1 и даже не пытается сопоставить 0? Если да, то как я могу с этим бороться? Набор данных неравномерен, но есть больше нулей. Для обучающего набора соотношение 0: 1 составляет около 8000: 5000, а для проверки 700: 500.

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

1. » Что это значит, когда мой CNN имеет ноль ложных отрицаний? » Я бы предположил, что это означает, что вы проделали хорошую работу. Теперь вы можете просмотреть каждый элемент в наборе данных и выяснить, был ли он точным или нет.

2. Может быть. Сколько там ложных срабатываний?

3. Да, в том-то и дело, что ложных срабатываний много (тысячи). Точность составляет около 40%.

Ответ №1:

Наличие нулевого ложного отрицания звучит довольно подозрительно. Какова ваша точность? Как выглядит матрица путаницы? В любом случае, я бы рекомендовал ввести веса классов для несбалансированных обучающих данных

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

1. Точность составляет всего около 40%, и есть много ложных срабатываний. Спасибо за предложение о весах классов, это хорошая идея.

2. Хорошо, я предполагаю, что тогда что-то не так. Насколько велики изображения? Какую функцию активации вы используете для классификации? Какие потери? Как выглядит ваша сетевая архитектура? Я думаю, мы можем помочь вам, только если мы знаем эти вещи…

3. Похоже, да. Все изображения изменяются до 320×320 (я генерирую их с помощью потока из фрейма данных), размер пакета равен 64, я использую двоичную перекрестную энтропию в качестве функции потерь и softmax в качестве функции активации, а архитектура — VGG (все ее слои поддаются обучению = false), а затем ее вывод получаетсплющенный, пропускаем 3 последовательных плотных (128) слоя, а затем плотный (1) выходной слой. Эти добавленные обучаемы

4. звучит не так уж плохо, но почему бы вам не позволить слоям CNN быть обучаемыми?

5. Я подумал, что если я использую предварительно обученную модель VGG, то мне нужно только обучить биты, которые я добавляю к ней после. Возможно, это не концептуально правильно, это моя первая встреча с обучением передаче. Как вы думаете, я должен позволить всем слоям обучаться или, может быть, только некоторым из последних слоев VGG плюс мои собственные слои? Хотя я пробовал это, и все равно было ноль ложных негативов.