Python深度学习(使用 Keras 回调函数和 TensorBoard 来检查并监控深度学习模型)--学习笔记(十六)

7.2 使用 Keras 回调函数和 TensorBoard 来检查并监控深度学习模型

  • 使用model.fit()或model.fit_generator()在一个大型数据集上启动数十轮的训练,有点类似于扔一架飞机,一开始给它一点推力,之后你便再也无法控制其飞行轨迹或着陆点。如果想要避免不好的结果(并避免浪费纸飞机),更聪明的做法是不用纸飞机,而是用一架无人机,它可以感知其环境,将数据发挥给操作者,并且能够基于当前状态自主航行。
7.2.1 训练过程中将回调函数作用于模型
  • 训练模型时,很多事情一开始都无法预测。尤其是你不知道需要多少轮才能得到最佳验证损失。前面所有例子都采用这样一种策略:训练足够多的轮次,这时模型已经开始过拟合,根据这第一次运行来确定训练所需要的正确轮次,然后使用这个最佳轮数从头开始再启动一次新的训练。
  • 处理这个问题的更好方法是,当观测到验证损失不再改善时就停止训练。这可以使用Keras回调函数来实现。回调函数(callback)是在调用fit时传入模型的一个对象(即实现特定方法的类实例),它在训练过程中的不同时间点都会被模型调用。它可以访问关于模型状态与性能的所有可用数据,还可以采取行动:中断训练、保存模型、加载一组不同的权重或改变模型的状态。
  • 模型检查点(model checkpointing):在训练过程中的不同时间点保存模型的当前权重。
  • 提前终止(early stopping):如果验证损失不再改善,则中断训练(当然,同时保存在训练过程中得到的最佳模型)。
  • 在训练过程中动态调节某些参数值:比如优化器的学习率。
  • 在训练过程中记录训练指标和验证指标,或将模型学到的表示可视化(这些表示也在不断更新):你熟悉的Keras进度条就是一个回调函数。
  • keras.callbacks模块包含许多内置的回调函数:keras.callbacks.ModelCheckpoint、keras.callbacks.EarlyStopping、keras.callbacks.LearningRateScheduler、keras.callbacks.ReduceLRonPlateau、keras.callbacks.CSVLogger。
1.ModelCheckpoint与EarlyStopping回调函数
  • 如果监控的目标指标在设定的轮数内不再改善,可以用EarlyStopping回调函数来中断训练。比如,这个回调函数可以在刚开始过拟合的时候就中断训练,从而避免用更少的轮次重新训练模型。这个回调函数通常与ModelCheckpoint结合使用,后者可以在训练过程中持续不断地保存模型(你也可以选择只保存目前的最佳模型,即一轮结束后具有最佳性能的模型)。
import keras

# 通过fit的callbacks参数将回调函数传入模型中,这个参数接收一个回调函数的列表。可以传入任意个数的回调函数。
# 如果不再改善就中断训练,监控模型的验证精度,如果精度在多于一轮的时间(即两轮)内不再改善,中断训练。
# 在每轮过后保存当前权重,目标模型文件的保存路径,如果val_loss没有改善,那么不需要覆盖模型文件。这就可以始终保存在训练过程中见到的最佳模型
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'])

# 注意,由于回调函数要监控验证损失和验证精度,所以在调用fit时需要传入validation_data(验证数据)

model.fit(x, y, epochs
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值