Вы используете ModelCheckpointего параметры по умолчанию (кроме monitor)?
ModelCheckpointимеет параметр с именем, modeкоторый указывает тип метрики, которая будет использоваться. modeможет принимать 3 значения 'min' 'max'и 'auto'(по умолчанию):
min: означает, что вы хотите минимизировать показатель (например, функцию потерь).
max: означает, что вы хотите максимизировать показатель (например, точность).
auto: пытается понять, что делать самостоятельно. Если вы посмотрите на код , он проверяет, содержит 'acc'ли имя метрики или начинается ли он с 'fmeasure'. Если да, он устанавливает режим max, если нет, то устанавливает его min.
В вашем случае вы отслеживаете индекс jaccard, который является метрикой, которую вы хотите максимизировать, поэтому вы хотите установить режим max. Обычно, потому что «jaccard» содержит строку «acc», даже если установлен режим, autoон должен работать нормально.
Однако, если вы назвали свою метрику как-то произвольно (например my_metric), режим по умолчанию будет установлен на min, что означает, что он будет хранить веса, которые достигают наименьшей производительности по вашей метрике, которые должны быть весами первой эпохи.
Предложение : в следующий раз попробуйте, mode='max'чтобы быть уверенным.
intersection_over_unionи, вероятно, она хранила веса с наименьшим счетом, которые были с первой эпохи. Это имеет большой смысл. Спасибо!