Сбрасывает ли model.fit() метрики после каждой эпохи? Как сбросить метрики вручную? ⇐ Python
Сбрасывает ли model.fit() метрики после каждой эпохи? Как сбросить метрики вручную?
Насколько я понимаю, model.fit(epochs=NUM_EPOCHS) не сбрасывает метрики для каждой эпохи. Мой код для метрик и model.fit() выглядит следующим образом (упрощенно):
импортировать тензорный поток как tf из приложений импорта tensorflow.keras NUM_CLASSES = 4 ВХОД_ШАПЕ = (256, 256, 3) МОДЕЛИ = { «DenseNet121»: apps.DenseNet121, «DenseNet169»: apps.DenseNet169. } REDUCE_LR_PATIENCE = 2 REDUCE_LR_FACTOR = 0,7 EARLY_STOPPING_PATIENCE = 4 для имени модели — модель в MODELS.items(): loadingModel = model(include_top=False, Weights='imagenet', пулирование = 'avg', input_shape = INPUT_SHAPE) sequentialModel = tf.keras.models.Sequential() sequentialModel.add(загруженнаямодель) sequentialModel.add(tf.keras.layers.Dense(NUM_CLASSES, активация = 'softmax')) aucCurve = tf.keras.metrics.AUC (кривая = 'ROC', multi_label = True) categoricalAccuracy = tf.keras.metrics.CategoricalAccuracy() F1Score = tfa.metrics.F1Score(num_classes = NUM_CLASSES, среднее значение = «макро», пороговое значение = нет) метрики = [aucCurve, categoricalAccuracy, F1Score] sequentialModel.compile(метрики=метрики) обратные вызовы = [ tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', терпение=REDUCE_LR_PATIENCE, verbose=1, Factor=REDUCE_LR_FACTOR), tf.keras.callbacks.EarlyStopping(monitor='val_loss', verbose=1, терпение=EARLY_STOPPING_PATIENCE), tf.keras.callbacks.ModelCheckpoint(filepath=modelName + '_epoch-{epoch:02d}.h5',monitor='val_loss', save_best_only=False, verbose=1), tf.keras.callbacks.CSVLogger(имя_модели + '_training.csv')] sequentialModel.fit(эпохи=NUM_EPOCHS) Возможно, я могу сбросить метрики, выполнив цикл for в диапазоне NUM_EPOCHS и инициализировав метрики в цикле for, но я не уверен, что это хорошее решение. Кроме того, у меня есть обратные вызовы ModelCheckpoint и CSVLogger, для которых требуется номер эпохи из model.fit(), поэтому это не будет работать, если я выполню цикл for.
Есть ли у вас какие-либо предложения о том, как сбросить показатели для каждой эпохи? Является ли выполнение цикла for в диапазоне NUM_EPOCHS единственным решением? Спасибо.
Насколько я понимаю, model.fit(epochs=NUM_EPOCHS) не сбрасывает метрики для каждой эпохи. Мой код для метрик и model.fit() выглядит следующим образом (упрощенно):
импортировать тензорный поток как tf из приложений импорта tensorflow.keras NUM_CLASSES = 4 ВХОД_ШАПЕ = (256, 256, 3) МОДЕЛИ = { «DenseNet121»: apps.DenseNet121, «DenseNet169»: apps.DenseNet169. } REDUCE_LR_PATIENCE = 2 REDUCE_LR_FACTOR = 0,7 EARLY_STOPPING_PATIENCE = 4 для имени модели — модель в MODELS.items(): loadingModel = model(include_top=False, Weights='imagenet', пулирование = 'avg', input_shape = INPUT_SHAPE) sequentialModel = tf.keras.models.Sequential() sequentialModel.add(загруженнаямодель) sequentialModel.add(tf.keras.layers.Dense(NUM_CLASSES, активация = 'softmax')) aucCurve = tf.keras.metrics.AUC (кривая = 'ROC', multi_label = True) categoricalAccuracy = tf.keras.metrics.CategoricalAccuracy() F1Score = tfa.metrics.F1Score(num_classes = NUM_CLASSES, среднее значение = «макро», пороговое значение = нет) метрики = [aucCurve, categoricalAccuracy, F1Score] sequentialModel.compile(метрики=метрики) обратные вызовы = [ tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', терпение=REDUCE_LR_PATIENCE, verbose=1, Factor=REDUCE_LR_FACTOR), tf.keras.callbacks.EarlyStopping(monitor='val_loss', verbose=1, терпение=EARLY_STOPPING_PATIENCE), tf.keras.callbacks.ModelCheckpoint(filepath=modelName + '_epoch-{epoch:02d}.h5',monitor='val_loss', save_best_only=False, verbose=1), tf.keras.callbacks.CSVLogger(имя_модели + '_training.csv')] sequentialModel.fit(эпохи=NUM_EPOCHS) Возможно, я могу сбросить метрики, выполнив цикл for в диапазоне NUM_EPOCHS и инициализировав метрики в цикле for, но я не уверен, что это хорошее решение. Кроме того, у меня есть обратные вызовы ModelCheckpoint и CSVLogger, для которых требуется номер эпохи из model.fit(), поэтому это не будет работать, если я выполню цикл for.
Есть ли у вас какие-либо предложения о том, как сбросить показатели для каждой эпохи? Является ли выполнение цикла for в диапазоне NUM_EPOCHS единственным решением? Спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение