《python深度学习》笔记---7.2.1、使用 Keras 回调函数
一、总结
一句话总结:
【在训练过程中的不同时间点都会被模型调用】:回调函数(callback)是在调用 fit 时传入模型的一个对象(即实现特定方法 的类实例),它在训练过程中的不同时间点都会被模型调用。
【中断训练、保存模型、加载一组不同的权重或改变模型的状态】:它可以访问关于模型状态与性能的 所有可用数据,还可以采取行动:中断训练、保存模型、加载一组不同的权重或改变模型的状态。
1、训练模型时,很多事情一开始都无法预测。尤其是你不知道需要多少轮才能得到最佳验证 损失,那么应该怎么办?
【过拟合之后从过拟合的那个点开始训练】:训练足够多的轮次,这时模型已经开始过拟合,根 据这第一次运行来确定训练所需要的正确轮数,然后使用这个最佳轮数从头开始再启动一次新 的训练。
【更好方式是当观测到验证损失不再改善时就停止训练】:处理这个问题的更好方法是,当观测到验证损失不再改善时就停止训练。这可以使用 Keras 回调函数来实现。
2、keras回调函数的一些用法示例?
【模型检查点(model checkpointing)】:在训练过程中的不同时间点保存模型的当前权重。
【提前终止(early stopping)】:如果验证损失不再改善,则中断训练(当然,同时保存在训 练过程中得到的最佳模型)。
【在训练过程中动态调节某些参数值】:比如优化器的学习率。
【在训练过程中记录训练指标和验证指标,或将模型学到的表示可视化(这些表示也在不 断更新)】:你熟悉的 Keras 进度条就是一个回调函数!
3、ModelCheckpoint 与 EarlyStopping 回调函数?
【EarlyStopping回调函数来中断训练】:如果监控的目标指标在设定的轮数内不再改善,可以用 EarlyStopping 回调函数来中断训练。
【EarlyStopping可以在刚开始过拟合的时候就中断训练】:比如,这个回调函数可以在刚开始过拟合的时候就中断训练,从而避免用更少的轮次重 新训练模型。
【ModelCheckpoint保存模型】:这个回调函数通常与 ModelCheckpoint 结合使用,后者可以在训练过程中持续 不断地保存模型(你也可以选择只保存目前的最佳模型,即一轮结束后具有最佳性能的模型)
4、keras的callbacks使用实例?
【通过 fit 的 callbacks 参数将回调函数传入模型中】:这个参数 接收一个回调函数的列表。你可以传入任意个数的回调函数
import keras callbacks_list = [keras.callbacks.EarlyStopping(monitor='acc',patience=1,),keras.callbacks.ModelCheckpoint(filepath='my_model.h5',monitor='val_loss',save_best_only=True,) ] model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['acc']) model.fit(x, y,epochs=10,batch_size=32,callbacks=callbacks_list,validation_data=(x_val, y_val))
5、ReduceLROnPlateau 回调函数 ?
【使用ReduceLROnPlateau回调函数来降低学习率】:如果验证损失不再改善,你可以使用ReduceLROnPlateau回调函数来降低学习率。
【在训练过程中如果出现 了损失平台(loss plateau),那么增大或减小学习率都是跳出局部最小值的有效策略。】
6、keras编写你自己的回调函数 ?
【创建 keras.callbacks.Callback 类的 子类】:如果你需要在训练过程中采取特定行动,而这项行动又没有包含在内置回调函数中,那么 可以编写你自己的回调函数。回调函数的实现方式是创建 keras.callbacks.Callback 类的 子类。
二、内容在总结中
博客对应课程的视频位置: