• 早停止(Early Stopping)-PyTorch版本(代码使用教程)


    一、说明

    记录自己使用早停法来解决过拟合问题的经历。

    这里给出的是pytorch版本,需要tensorflow版本的,可以使用chatgpt转换,也可以自己转换。

    二、原理

    这个早停法的原理就是,对比你每次的验证loss,如果超过20epoch(可以自己设置)都没有上升,就认为过拟合了,就会跳出循环,停止代码。

    ex:假如你跑到43个epoch,验证loss=0.02,等到跑到63个epoch时,验证loss始终没有低于0.01,就会停止代码

    三、代码实现

    首先提供原github链接,有兴趣的朋友可以看一下这个。

    https://github.com/Bjarten/early-stopping-pytorch

    如果不能进github下载的话,下面是我下载好的链接。

    蓝奏云:https://wwqg.lanzouj.com/igmg71d0dicd

    1.我先介绍一下这个参数

    • patience:上次模型在验证集上损失降低之后等待的epoch,此处设置为20。
    • verbose:默认为False,是否显示loss具体下降了多少。
    • counter:用于统计等待了多少个epoch,大于你设置的patience之后,就会停止循环。
    • best_score:记录模型评估的最好loss,用于比较。
    • early_step:默认为False,如果为True,模型就停止循环。
    • val_loss_min:默认为正无穷(np.Inf), 模型评估损失函数的最小值。
    • delta:默认为0, 表示模型损失函数改进的最小值,当超过这个值时候表示模型有所改进。

    2.现在讲一下怎么使用。

    1.首先,将github链接中的“pytorchtools.py”文件加入到你的项目中。

    2.然后这样。

    在开头引用

    这一步其实可以不用,直接在调用的时候给参数。

    不过,如果你代码中有这个参数设置的话,就写一行这个代码,如果没有的话,就不用写了。

    注:如果你代码中有很多个要给参数的地方,这样写每次改一下就可以,否则改一下参数,要改很多个地方。

    这个调用不要放到每次epoch的循环里,放到外面。如果没有刚才那个参数设置,这里args.patience就替换成你要设置参数。

    下面这段代码放到epoch循环里面的最后位置就可以了

    注:for循环就是类似这种:

    for epoch in range(args.epoch):
    

    意思就是说,每次循环都会检查一下是否符合早停的条件,如果符合就跳出循环,否则就继续循环。

    以上就是早停法的使用流程了,希望可以帮到你。

    四、效果图

  • 相关阅读:
    数据结构与算法-二分查找
    十三、W5100S/W5500+RP2040树莓派Pico<FTP Server>
    Jenkins 配置 LDAP 登陆
    采用cv2和默认的人脸识别分类器实现人脸检测功能
    Hadoop根据加工数据量计算Datanode数量
    zeppelin安装python(使用pymysql包)
    借助实例,轻松掌握 Makefile
    08. Java内存模型(JMM)
    FFMPEG音视频开发指南(一)
    Reactor和Proactor
  • 原文地址:https://blog.csdn.net/lihaiyuan_0324/article/details/134078739