gpt4 book ai didi

python - model.fit() 是否在每个时期后重置指标?如何手动重置指标?

转载 作者:行者123 更新时间:2023-12-05 02:41:26 27 4
gpt4 key购买 nike

据我了解,model.fit(epochs=NUM_EPOCHS) 不会为每个时期重置指标。我的指标和 model.fit() 代码如下所示(已简化):

import tensorflow as tf
from tensorflow.keras import applications

NUM_CLASSES = 4
INPUT_SHAPE = (256, 256, 3)
MODELS = {
'DenseNet121': applications.DenseNet121,
'DenseNet169': applications.DenseNet169
}
REDUCE_LR_PATIENCE = 2
REDUCE_LR_FACTOR = 0.7
EARLY_STOPPING_PATIENCE = 4


for modelName, model in MODELS.items():

loadedModel = model(include_top=False, weights='imagenet',
pooling='avg', input_shape=INPUT_SHAPE)

sequentialModel = tf.keras.models.Sequential()
sequentialModel.add(loadedModel)
sequentialModel.add(tf.keras.layers.Dense(NUM_CLASSES, activation='softmax'))

aucCurve = tf.keras.metrics.AUC(curve = 'ROC', multi_label = True)
categoricalAccuracy = tf.keras.metrics.CategoricalAccuracy()
F1Score = tfa.metrics.F1Score(num_classes = NUM_CLASSES, average = 'macro', threshold = None)
metrics = [aucCurve, categoricalAccuracy, F1Score]

sequentialModel.compile(metrics=metrics)

callbacks = [
tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', patience=REDUCE_LR_PATIENCE, verbose=1, factor=REDUCE_LR_FACTOR),
tf.keras.callbacks.EarlyStopping(monitor='val_loss', verbose=1, patience=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(modelName + '_training.csv')]

sequentialModel.fit(epochs=NUM_EPOCHS)

也许我可以通过在 NUM_EPOCHS 范围内执行 for 循环来重置指标,并在 for 循环中初始化指标,但我不确定这是否是一个好的解决方案。此外,我有 ModelCheckpoint 和 CSVLogger 回调,它们需要来自 model.fit() 的纪元号,因此如果我执行 for 循环,它不会真正起作用。

对于如何为每个时期重置指标,您有什么建议吗?在 NUM_EPOCHS 范围内进行 for 循环是这里唯一的解决方案吗?谢谢。

最佳答案

不,指标是按时期计算的。它们不是按时期平均的,而是按每个时期的批处理平均的。您会看到指标不断改进,因为您的模型正在接受训练。

关于python - model.fit() 是否在每个时期后重置指标?如何手动重置指标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68125047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com