Честно говоря, я столкнулся с той же проблемой в какой-то момент, и для меня лучшим решением было использование Recall
и Precision
из встроенных метрик.
Начиная с TensorFlow 2.0, эти две метрики являются встроенными tensorflow.keras.metrics
, и они хорошо работают при условии, что вы используете binary_crossentropy
с Dense(1)
на последнем уровне (в конце концов, это метрики для двоичной классификации, конечно).
Главное (важно отметить) заключается в том, что реализация полностью отличается от того, что вы пытаетесь достичь, и того, что было в Keras раньше.
Фактически, в версии Keras 1.X все эти метрики были доступны ( F1-Score, Recall и Precision), но они были удалены начиная с Keras 2.X из-за того, что оценка по партиям не имеет отношения к глобальной оценке этих метрик.
Согласно Франсуа Шоле (март 19th 2017) (https://github.com/keras-team/keras/issues/5794):
По сути, это все глобальные метрики, которые были аппроксимированы для каждой партии, что скорее вводит в заблуждение, чем помогает. Это было упомянуто в документах, но гораздо проще удалить их полностью. Во-первых, было ошибкой объединять их.
Однако в TensorFlow 2.0 (tensorflow.keras.metrics
) они используют специализированные встроенные аккумуляторы, и вычисления выполняются должным образом, поэтому являются актуальными. для вашего набора данных. Вы можете найти более подробное описание здесь:
https://www.tensorflow.org/api_docs/python/tf/keras/metrics/Recall?version=stable
Моя сильная рекомендация: используйте встроенные метрики и пропустите их реализацию вручную, тем более что Вы бы естественным образом реализовали их в пакетном режиме.
Если у вас возникли проблемы с загрузкой модели, убедитесь, что:
- Убедитесь, что у вас установлено Python 3 (> = 3.6.X)
Если проблема не устранена, убедитесь, что пользовательская информация передана load_model
, обратившись к следующему фрагменту:
metric_config_dict = {
'precision': precision
}
model = tensorflow.keras.models.load_model('path_to_my_model.hdf5',custom_objects= metric_config_dict)
Франсуа Шоле о выпуске Keras 2.3.0:
Keras 2.3.0 - это первая версия Kera 2.3 с несколькими бэкэндами, которая поддерживает TensorFlow 2.0. Он поддерживает совместимость с TensorFlow 1.14, 1.13, а также с Theano и CNTK.
В этом выпуске API синхронизирован c с API tf.keras начиная с TensorFlow 2.0. Однако обратите внимание, что он не поддерживает большинство функций TensorFlow 2.0, в частности, активное выполнение. Если вам нужны эти функции, используйте tf.keras.
Это также последний основной выпуск мульти-серверных Keras. В дальнейшем мы рекомендуем пользователям рассмотреть возможность переключения своего кода Keras на tf.keras в TensorFlow 2.0. Он реализует тот же API Keras 2.3.0 (поэтому переключение должно быть таким же простым, как и изменение операторов импорта Keras), но у него есть много преимуществ для пользователей TensorFlow, таких как поддержка быстрого выполнения, распространения, обучения TPU и, как правило, гораздо лучшая интеграция между низкоуровневым TensorFlow и высокоуровневыми концепциями, такими как Layer и Model. Он также лучше поддерживается.
Развитие будет сосредоточено на развитии tf.keras. В течение следующих 6 месяцев мы будем поддерживать мульти-бэкэнд-керас, но будем только исправлять ошибки. Изменения API не будут перенесены
Поэтому даже создатель Keras рекомендует переключиться на tf.keras
вместо обычного keras
. Пожалуйста, включите ваш код и проверьте, сохраняются ли проблемы. Если вы смешаете tf.keras
и keras
, вы получите всевозможные странные ошибки; таким образом, измените весь ваш импорт на tf.keras
. Для получения дополнительной информации относительно TensorFlow 2.0 и других изменений вы можете обратиться к этому: https://www.pyimagesearch.com/2019/10/21/keras-vs-tf-keras-whats-the-difference-in-tensorflow-2-0/