我正在训练深度学习模型。验证集中有大约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
在以下问题中回答了此代码。
但是,我无法在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))
有人能建议我在回调内的每个时期之后如何更新最佳的损失和准确性吗?