• 《python深度学习》笔记---7.2.1、 使用 Keras 回调函数


    《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 类的 子类。

    二、内容在总结中

    博客对应课程的视频位置:

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    RAP开发入门-主题更换
    RAP开发入门-开发笔记-bug记录
    RAP开发入门-运行过程简析(三)
    Redis入门笔记-redis内部数据结构(01)
    JAVA基础-子类继承父类实例化对象过程
    RAP开发入门-开发笔记
    RAP开发入门-运行第一个HelloWorld(二)
    android maven eclipse
    字符与编码(摘录)
    Python 学习lesson 1
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13820299.html
Copyright © 2020-2023  润新知