Я разработал CNN для классификации изображений с целью автоматического контроля качества. Входные изображения имеют размер 320 x 320 пикселей. У меня есть 5 конверсионных слоев, слой FC с 512 выходами и последний слой только с двумя выходами: «хороший» или «плохой». Контроль качества должен осуществляться с точностью до 1,0. Я использую тензорный поток.
Я новичок в CNN, и у меня проблема с оценкой моей модели. Хотя я получаю точность 1,0 на тренировочном наборе, а иногда и на проверочном наборе, меня беспокоят значения функций стоимости. Моя модель выводит очень большие логиты, и если я софтмаксирую эти логиты, я всегда получаю 100% вероятность «хорошего» или «плохого». Следовательно, если моя модель правильно предсказывает пример, стоимость (рассчитанная как cross_entropy_with_logits) равна 0. Если все обучающие примеры предсказаны правильно, веса больше не меняются, и моя модель не улучшает производительность на проверочном наборе.
Вот примеры результатов моей модели (партия, содержащая 10 примеров):
Logits
[[ 2169.41455078 2981.38574219]
[ 2193.54492188 3068.97509766]
[ 2185.86743164 3060.24047852]
[ 2305.94604492 3198.36083984]
[ 2202.66503906 3136.44726562]
[ 2305.78076172 2976.58081055]
[ 2248.13232422 3130.26123047]
[ 2259.94726562 3132.30200195]
[ 2290.61303711 3098.0871582 ]
[ 2500.9609375 3188.67456055]]
Softmax:
[[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]
[ 0. 1.]]
cost calculated with tf.nn.softmax_cross_entropy_with_logits
[ 811.97119141 0. 874.37304688 0. 933.78222656
670.80004883 0. 0. 807.47412109 0. ]
Как вы думаете, в чем здесь проблема? Моя CNN слишком сложна для приложения и выводит 100% вероятности? Мой CNN просто переоснащается? Вам отсев поможет?