目录
回调函数使用
回调函数是一个函数的合集,会在训练的阶段中所使用。你可以使用回调函数来查看训练模型的内在状态和统计。你可以传递一个列表的回调函数(作为 callbacks 关键字参数)到 Sequential 或 Model 类型的 .fit() 方法。在训练时,相应的回调函数的方法就会被在各自的阶段被调用。
Callback
用来组建新的回调函数的抽象基类。
keras.callbacks.Callback()
属性
- params: 字典。训练参数, (例如,verbosity, batch size, number of epochs…)。
- model: keras.models.Model 的实例。 指代被训练模型。
被回调函数作为参数的 logs 字典,它会含有于当前批量或训练轮相关数据的键。
目前,Sequential 模型类的 .fit() 方法会在传入到回调函数的 logs 里面包含以下的数据:
- on_epoch_end: 包括 acc 和 loss 的日志, 也可以选择性的包括 val_loss(如果在 fit 中启用验证),和 val_acc(如果启用验证和监测精确值)。
- on_batch_begin: 包括 size 的日志,在当前批量内的样本数量。
- on_batch_end: 包括 loss 的日志,也可以选择性的包括 acc(如果启用监测精确值)。
BaseLogger
会积累训练轮平均评估的回调函数。
keras.callbacks.BaseLogger(stateful_metrics=None)
这个回调函数被自动应用到每一个 Keras 模型上面。
参数
stateful_metrics: 可重复使用不应在一个 epoch 上平均的指标的字符串名称。 此列表中的度量标准将按原样记录在 on_epoch_end 中。 所有其他指标将在 on_epoch_end 中取平均值。
TerminateOnNaN
当遇到 NaN 损失会停止训练的回调函数。
keras.callbacks.TerminateOnNaN()
ProgbarLogger
会把评估以标准输出打印的回调函数。
keras.callbacks.ProgbarLogger(count_mode='samples', stateful_metrics=None)
参数
- count_mode: “steps” 或者 “samples”。 进度条是否应该计数看见的样本或步骤(批量)。
- stateful_metrics: 可重复使用不应在一个 epoch 上平均的指标的字符串名称。 此列表中的度量标准将按原样记录在 on_epoch_end 中。 所有其他指标将在 on_epoch_end 中取平均值。
History
把所有事件都记录到 History 对象的回调函数。
keras.callbacks.History()
这个回调函数被自动启用到每一个 Keras 模型。History 对象会被模型的 fit 方法返回。
ModelCheckpoint
在每个训练期之后保存模型。
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)
filepath 可以包括命名格式选项,可以由 epoch 的值和 logs 的键(由 on_epoch_end 参数传递)来填充。
例如:如果 filepath 是 weights.{epoch:02d}-{val_loss:.2f}.hdf5, 那么模型被保存的的文件名就会有训练轮数和验证损失。
参数
- filepath: 字符串,保存模型的路径。
- monitor: 被监测的数据。
- verbose: 详细信息模式,0 或者 1 。
- save_best_only: 如果 save_best_only=True, 被监测数据的最佳模型就不会被覆盖。
- mode: {auto, min, max} 的其中之一。 如果 save_best_only=True,那么是否覆盖保存文件的决定就取决于被监测数据的最大或者最小值。 对于 val_acc,模式就会是 max,而对于 val_loss,模式就需要是 min,等等。 在 auto 模式中,方向会自动从被监测的数据的名字中判断出来。
- save_weights_only: 如果 True,那么只有模型的权重会被保存 (model.save_weights(filepath)), 否则的话,整个模型会被保存 (model.save(filepath))。
- period: 每个检查点之间的间隔(训练轮数)。
EarlyStopping
当被监测的数量不再提升,则停止