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

news2024/11/15 23:52:25

一、说明

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

这里给出的是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):

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

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

四、效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AQS总结

详细分析地址:跳转 head等于NodeA,NodeA指向NodeB,NodeB指向NodeC, tail等于NodeC。 NodeA也就是持有线程的Node,阻塞队列是指NodeA后面的所有队列,NodeA不属于阻塞队列。 公平锁: A线程先进来…

广西厂家直销建筑模板,工程用木工板,多层胶合板批发

欢迎选购我们的产品:广西厂家直销的建筑模板。作为一家专业厂家,我们提供工程用木工板,采用标准尺寸的多层胶合板制作,具备出色的防潮耐磨性能和高周转次数。 1. 工程用途:我们的建筑模板专为各类工程使用而设计&#…

(echarts)雷达图封装相关总结及使用

(echarts)雷达图封装相关总结及使用 数据结构&#xff1a; 页面&#xff1a; <div id"chart4" style"height:420px;width: 100%;" />//雷达图 echartFour(obj) {var chartDom document.getElementById("chart4");var myChart echarts.i…

浙大做了一个可用于AI领域的学术会议问答LLMs

深度学习自然语言处理 原创作者&#xff1a;wkk 今天介绍一篇来自于浙江大学的一项研究&#xff0c;关于基于LLM进行人工智能领域内7个不同学术会议QA数据集的论文。 论文: Reliable Academic Conference Question Answering: A Study Based on Large Language Model地址: http…

网络攻击的发展

在当今数字化时代&#xff0c;网站被攻击已经成为常态&#xff0c;网络威胁愈演愈烈。这些攻击不仅威胁到企业的安全&#xff0c;还可能导致严重的商业危机。本文将探讨为什么网络流量攻击变得如此普遍和容易&#xff0c;并分析未来可能引发的商业危机。 ​ 网络流量攻击的普遍…

【博士每天一篇文献-算法】iCaRL_ Incremental Classifier and Representation Learning

阅读时间&#xff1a;2023-10-27 1 介绍 年份&#xff1a;2017 作者&#xff1a;Sylvestre-Alvise Rebuffi; Alexander Kolesnikov; Georg Sperl; Christoph H. Lampert &#xff0c;牛津大学 期刊&#xff1a;Proceedings of the IEEE conference on Computer Vision and Pa…

竞赛选题 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

评比无代码低代码平台时,可以考虑以下几个方面

无代码低代码平台是近年来兴起的一种软件开发工具&#xff0c;它们旨在帮助非技术人员快速创建应用程序&#xff0c;而无需编写大量的代码。这些平台通过提供可视化的界面和预先构建的组件&#xff0c;使用户能够通过拖放和配置的方式来构建应用程序。选择无代码低代码平台时&a…

微信公众号点击打开地图导航

<h3 id"menu-location">地理位置接口</h3><span class"desc">使用微信内置地图查看位置接口</span><button class"btn btn_primary" id"openLocation">openLocation</button> <span class&quo…

发展高质量存储力,中国高科技力量聚浪成潮

中国信息通信研究院指出&#xff0c;在全球数字化转型与产业变革的浪潮下&#xff0c;算力正在成为改变全球竞争格局的关键力量。而根据最新的《算力基础设施高质量发展行动计划》&#xff0c;算力是集信息计算力、数据存储力和网络运载力于一体的新型生产力。当前&#xff0c;…

ORACLE-递归查询、树操作

1. 数据准备 -- 测试数据准备 DROP TABLE untifa_test;CREATE TABLE untifa_test(child_id NUMBER(10) NOT NULL, --子idtitle VARCHAR2(50), --标题relation_type VARCHAR(10) --关系,parent_id NUMBER(10) --父id );insert into untifa_test (CHILD_ID, TITLE, RELATION_TYP…

vite vue3 ts 使用sass 设置样式变量 和重置默认样式

1.安装scss 样式支持依赖 yarn add -D sass 2.使用sass <div><!-- 测试使用sass --><h1>测试使用sass</h1> </div><style scope lang"scss"> div {h1 {color: red;} } </style> 效果&#xff1a; 3.通过npm下载并复制…

MarkDown教程记录

什么是 Markdown? Markdown 是一款轻量级标记语言&#xff0c;不同于HTML (Hypertext Markup Language)&#xff0c;Markdown 的语法非常简单&#xff0c;且容易上手Markdown 以 纯文本格式 编写文档&#xff0c;依赖键盘而非鼠标&#xff0c;专注于写作本身&#xff0c;感受…

为什么把k8s比做操作系统:kubernetes与os的架构对比

你还在背八大件吗&#xff1f;不如把k8s的架构和os一起看&#xff0c;你会发现一些超有趣的事情&#xff01;本文旨在将k8s的架构和os做个对比&#xff0c;帮助读者理解为什么k8s要这么设计。 kubernetes架构 kubernetes架构中由master节点和minion节点组成&#xff0c;maste…

c++ deque 的使用

目录 1. deque 的介绍 2. deque 底层原理 3. deque 的迭代器 4. deque 的接口使用 5. deque 和 vector&#xff0c;list 的比较 1. deque 的介绍 下面是 deque 的介绍&#xff0c;来自于&#xff1a;deque - C Reference (cplusplus.com) 的翻译&#xff0c;您可以不用…

MobPush数智化推送,精准定位万圣节狂欢年轻一族

随着中秋十一黄金周的结束&#xff0c;2023年最后一个法定节假日也一去不复返&#xff0c;但是别急&#xff0c;今年还有另一场不放假的狂欢节日——万圣节&#xff0c;万圣节作为西方国家第四季度最为重要的营销节日之一&#xff0c;在国内年轻人群体中同样具有较大的影响力和…

字节流和处理流的对象反序列化问题

细节&#xff1a; 读写要保持一致 序列对象时&#xff0c;默认将里面的所有属性都进行序列化&#xff0c;但除了static或transient修饰的成员 要求序列化或反序列化对象&#xff0c;需要实现Serializable 序列化对象时&#xff0c;要求里面的属性也要实现序列化接口 序列化…

java-- 静态数组

1.静态初始化数组 定义数组的时候直接给数组赋值。 2.静态初始化数组的格式&#xff1a; 注意&#xff1a; 1."数据类型[] 数组名"也可以写成"数据类型 数组名[]"。 2.什么类型的数组只能存放什么类型的数据 3.数组在计算机中的基本原理 当计算机遇到…

【优选算法精品】前缀和

文章目录 一、前缀和前缀和问题一维前缀和模板二维前缀和模板 细节处理题目1思路细节处理&#xff1a; 题目2思路 题目3题目4题目5题目6总结 一、前缀和 前缀和问题 前缀和用来快速解决某一段连续区间的和。 时间复杂度O(1) 注意&#xff1a;不要背模板&#xff0c;不要背模…

死锁Deadlock

定义 死锁是指两个或多个线程互相持有对方所需的资源&#xff0c;从而导致它们无法继续执行的情况。如下图所示&#xff0c;现有两个线程&#xff0c;分别是线程A及线程B&#xff0c;线程A持有锁A&#xff0c;线程B持有锁B。此时线程A想获取锁B&#xff0c;但锁B需等到线程B的结…