Хорошо, давайте начнем с верха,
Сначала, metrics = ['accuracy']
, Модель может оцениваться по нескольким параметрам, точность является одной из метрик, другая может быть binary_accuracy
, categorical_accuracy
,sparse_categorical_accuracy
, top_k_categorical_accuracy
и sparse_top_k_categorical_accuracy
, это только встроенные, вы даже можете создавать собственные метрики, чтобы понять метрики более подробно, вам нужно иметь четкое понимание loss
в нейронной сети,Вы могли бы знать, что функция потерь должна быть дифференцируемой, чтобы иметь возможность выполнять обратное распространение, это не обязательно в случае metrics
, метрики используются исключительно для оценки модели и, следовательно, могут даже быть функциями, которые не являются дифференцируемыми, в Kerasкак уже упоминалось в их документации
Функция метрики аналогична функции потерь, за исключением того, что результаты оценки метрики не используются при обучении модели.Вы можете использовать любую из функций потерь в качестве метрической функции.
Вы можете самостоятельно определять точность, которая не дифференцируема, но создает целевую функцию для того, что вам нужно из вашей модели.
TLDR;Метрики - это просто функции потерь, которые не используются при обратном распространении, но используются для оценки модели.
Теперь acc:xxx
может просто заключаться в том, что он даже не завершил ни одного распространения мини-пакета и, следовательно, не может дать оценку точности ещеЯ не обращал на это особого внимания, но обычно он остается там в течение нескольких секунд и, таким образом, является предположением.
Наконец 20% Снижение производительности модели при снятии с эксплуатацииобучение, да, это может быть случай переоснащения, но никто не может знать наверняка, не глядя на ваш набор данных, но, скорее всего, да, это переобучение, и вам может понадобиться посмотреть на данные, на которых он работает плохо, чтобы узнать причину.
Если что-то неясно, не имеет смысла, не стесняйтесь комментировать.