gpt4 book ai didi

tensorflow - 如何在 keras 中修改 ModelCheckPoint 以监视 val_acc 和 val_loss 并相应地保存最佳模型?

转载 作者:行者123 更新时间:2023-12-04 00:03:46 26 4
gpt4 key购买 nike

ModelCheckPoint提供为 val_Acc 保存两者的选项和 val_loss分别地。
我想以某种方式修改它,以便如果 val_acc正在改进 -> 保存模型。如果 val_acc等于之前最好的 val_acc然后检查 val_loss , 如果 val_loss低于之前最好的val_loss然后保存模型。

    if val_acc(epoch i)> best_val_acc:
save model
else if val_acc(epoch i) == best_val_acc:
if val_loss(epoch i) < best_val_loss:
save model
else
do not save model

最佳答案

您可以只添加两个回调:

callbacks = [ModelCheckpoint(filepathAcc, monitor='val_acc', ...),
ModelCheckpoint(filepathLoss, monitor='val_loss', ...)]

model.fit(......., callbacks=callbacks)
使用自定义回调
您可以在 LambdaCallback(on_epoch_end=saveModel) 中为所欲为.
best_val_acc = 0
best_val_loss = sys.float_info.max

def saveModel(epoch,logs):
val_acc = logs['val_acc']
val_loss = logs['val_loss']

if val_acc > best_val_acc:
best_val_acc = val_acc
model.save(...)
elif val_acc == best_val_acc:
if val_loss < best_val_loss:
best_val_loss=val_loss
model.save(...)

callbacks = [LambdaCallback(on_epoch_end=saveModel)]
但这和单个 ModelCheckpoint没什么区别与 val_acc .除非您使用的样本很少,或者您的自定义精度变化不大,否则您不会真正获得相同的精度。

关于tensorflow - 如何在 keras 中修改 ModelCheckPoint 以监视 val_acc 和 val_loss 并相应地保存最佳模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53736948/

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