Я обучаю Сверточную Нейронную Сеть, используя Python 3.7 и TensorFlow 2.0 с архитектурой на наборе данных CIFAR10:
Сверточные слои: 64, 64, макс. Уровень пула
Плотные слои: 256, 256, 10
Я обучаю этот CNN с помощью пользовательского критерия ранней остановки со следующими параметрами: минимальная_дельта = 0,001 и терпение = 3, в то время как отслеживаемая величина является потерей проверки или 'val_loss'. Ссылка на раннюю остановку .
Результат обучения прилагается в виде рисунка:
Самый низкий потери проверки (0,8897) происходят в эпоху 5, у которой точность проверки составляет 69,41%, в то время как эпоха 8 имеет более высокие потери проверки - 0,9487, но самую высокую точность проверки - 70,27%. Критерий ранней остановки останавливает дальнейшее обучение, так как отслеживаемая величина «val_loss» перестает уменьшаться после эпохи 5 из-за значения «терпения» 3.
Почему существует несоответствие между потерями при проверке и точностью при проверке? Я думал, что потеря и точность проверки go рука об руку, а это означает, что эпоха с наименьшими потерями проверки, следовательно, должна иметь самую низкую точность проверки.
Из-за этого несоответствия, если контролируемое количество должно быть 'val_loss 'или' val_accuracy '?
Спасибо!