DL(5) - ModelCheckPoint 和 EarlyStopping 详解(你不知道的细节)

ModelCheckPoint 和 EarlyStopping 详解

  • ModelCheckPoint
      • API:tf.keras.callbacks.ModelCheckpoin
  • EarlyStopping
      • API:tf.keras.callbacks.EarlyStopping


ModelCheckPoint

  • API:tf.keras.callbacks.ModelCheckpoin

  • 作用:按固定间隔,存储模型,默认是每个epoch存储一次模型。

主要参数:

参数名 含义
filepath 字符串,模型储存路径,可以是格式化的字符串。eg:filepath = ’ ./ model_{epoch:02d}-{val_acc:.2f}.h5’,则每次储存时都会将epoch及对应val_acc填入路径作为模型名称。
monitor 用于监控模型训练的指标,eg:val_acc、val_loss。
verbose 显示信息详细程度。0为不显示,1为显示储存信息。
save_best_only 若为True,到固定间隔时,监测值有改进才会保存模型,否则每次固定间隔都会保存一次模型。
save_weights_only 若为True,只保存模型权重,否则将保存整个模型(包括模型结构,配置信息等)
save_freq 若为‘epoch’表示:每个epoch存一次模型,若为整数表示:每训练此整数个样本存一次模型。默认:“epoch” 。
mode {’auto’,‘min’,’max’}中一种,在save_best_only=True时决定最佳模型的评判准则,eg:当monitor为val_acc时选择max、当monitor为val_loss时选择min、auto值将根据monitor的名字自动推断。

EarlyStopping

  • API:tf.keras.callbacks.EarlyStopping

  • 作用:根据监控指标,当模型训练在指定epoch次都没有提升的情况下,提前停止训练

主要参数:

参数名 含义
monitor 用于监控模型训练的指标,eg:val_acc、val_loss。
min_delta 监控值提升的最小变化量,当小于此值时视为没有提升。默认:0
verbose 显示信息详细程度。0为不显示,1为显示信息。
patience 指定忍受模型没有改善的epoch次数。
mode {’auto’,‘min’,’max’}中一种,选择min时将监控monitor不再减少则停止,选择max时将监控monitor不在增加则停止、auto值将根据monitor的名字自动推断。
restore_best_weights 若为True,将会取整个训练过程中最佳监控值的epoch训练结果作为最终模型权值,否则将以最后一次epoch的结果作为最终模型权值。

Tips:

  • ModelCheckPoint当filepath不采用格式化字符串时,仅存一个模型档,每次存储都会覆盖上一次存储的模型。因此若save_best_only为False,最终存储的一个模型将是最后一次epoch的结果,若为True将是最佳epoch的结果。若采用格式化字符串,将会按存储顺序存多个模型档。
  • ModelCheckPoint 的 save_best_only 控制存储的模型是否保留最佳参数。
  • EarlyStopping 的 restore_best_weights 控制模型训练提前结束后,接下去运行代码中的模型是否保留最佳参数。

你可能感兴趣的:(深度学习,Keras,ModelCheckPoint,EarlyStopping,tensorflow)