基于验证损失和验证准确性来保存keras模型

时间:2019-01-26 02:28:18

标签: python keras deep-learning

我正在训练深度学习模型。验证集中有大约50个样本,因此多次获得相同的准确性。我想保存具有最高准确性和最低损失的最佳模型。我尝试使用LambdaCallback,但不了解如何更新最佳的验证损失和准确性。 首先,我定义了以下函数。

def save_best_model(epoch,logs,save_loc,model,best_val_acc,best_val_loss):
    val_acc = logs['val_acc']
    val_loss = logs['val_loss']
    if val_acc > best_val_acc:
        best_val_acc = val_acc
        model.save(save_loc)
    elif val_acc == best_val_acc:
        if val_loss < best_val_loss:
            best_val_loss=val_loss
            model.save(save_loc)
    print(best_val_acc,best_val_loss)
    return best_val_acc,best_val_loss

在以下问题中回答了此代码。

How can I modify ModelCheckPoint in keras to monitor both val_acc and val_loss and save accordingly the best model?

但是,我无法在Lambdacallback中返回更新的最佳损失和准确性。我试图用下面的方式写,但是会产生错误。

erl_stop=keras.callbacks.LambdaCallback(on_epoch_end= lambda epoch, logs: (best_val_acc,best_val_loss)=save_best_model(epoch,logs,save_loc,model,best_val_acc,best_val_loss))

有人能建议我在回调内的每个时期之后如何更新最佳的损失和准确性吗?

0 个答案:

没有答案