Keras防止过拟合(三) 如何提前终止训练

使用early stopping解决神经网络过拟合问题 神经网络训练多少轮是一个很关键的问题,训练轮数少了欠拟合(underfit),训练轮数多了过拟合(overfit),那如何选择训练轮数呢? Early stopping可以帮助我们解决这个问题,它的作用就是当模型在验证集上的性能不再增加的时候就停止训练,从而达到充分训练的作用,又避免过拟合。 一、在Keras中使用early stopping Keras中有EarlyStopping类,可以... 阅读详情

解决过拟合的方法,前面已经讲了2种,Dropout层Keras防止过拟合(一)Dropout层源码细节,L1L2正则化keras防止过拟合(二) L1正则化与L2正则化源码细节和在自定义层中加入。
除此之外,当损失函数不降反增,或是降低十分缓慢时,提前结束训练也是一个很好的办法。因为,随着模型训练次数的增多,模型会更加复杂,更易出现过拟合。本篇说明一下,keras如何提前终止训练。

使用回调函数callbacks中的EarlyStopping

简单的例子:

callback = keras.callbacks.EarlyStopping(monitor='loss', patience=1)#使用loss作为监测数据,轮数设置为1
model = Sequential()
model.add(Dense(10))
model.compile(loss='categorical_crossentropy', optimizer='sgd', loss='mse')
model.fit(x_train, y_train,epochs=10, batch_size=1, callbacks=[callback])

Keras使用fit函数对模型进行训练:

fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)

观察fit函数中的参数,其中有一项为callbacks,keras中文文档中介绍如下:
在这里插入图片描述
回调函数callbacks:
在这里插入图片描述
在这些回调函数中,有一项为EarlyStopping,用来提前终止训练:

keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)

在这里插入图片描述
其中,monitor参数指定被监测的数据(个人感觉这个翻译有问题,应该叫做被监测的参数)。默认为’val_loss’,验证集的损失值。可以根据自己的需求,指定被监测数据。min_delta参数指定最小变化,默认值为0,若变化小于min_delta,模型停止训练。
patience指定没有进步的轮数。
工作原理:若在patience轮数中,指定的被检测数据,提升的值小于min_delta,模型便停止训练。

关于mode参数的理解:有些被检测数据,例如loss,值越小越好,因此使用min模式。但有些被检测数据,例如Recall,Accuracy,值越大越好,因此使用max模式。关于auto模式,描述中是从被监测的数据的名字中自动判断是使用max还是min。但我观察源码后,发现其只能自动使Accuracy变为max,其余的都是min.因此,如果你指定的是Precision、Recall等,必须定义mode为max,否则,mode默认定义为auto,还是会认为值越小越好,因此会出现,第二轮就结束(patience为1的情况)。
Earlystopping部分源码:

if mode == 'min':
    self.monitor_op = np.less
elif mode == 'max':
    self.monitor_op = np.greater
else:
    if 'acc' in self.monitor:#可以自动识别acc,其余的都不行。
        self.monitor_op = np.greater
    else:
        self.monitor_op = np.less

关于monitor被监测数据,具体可以使用哪些,keras中文文档并没有说,打开keras官方文档,其中有更加全面的描述:EarlyStopping
在这里插入图片描述
文档中说明了,制定的被监测数据,必须是compile中定义过的评价参数(这也是为什么我觉得monitor应该称为被监测参数的原因),也就是说,只要是在compile中定义过的评价参数,都可以用来作为被监测数据。

可使用监测数据

使用keras时,定义好模型后,需要先配置训练模型,使用到的是compile函数:

compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)

在这里插入图片描述
其中的metrics,用来指定评估模型用的参数。在这里定义过的,都可以作为EarlyStopping中的被监测数据。可使用的评价参数:
Metrics
需要注意的是,callback中monitor需要使用参数的字典名称,如损失为’loss’,准确率为’acc’。
若选择的被监测数据,没有在compile中定义,却在训练时指定,虽然不会终止训练,但是会给你提示:

model.compile(loss='categorical_crossentropy', optimizer='adam',
              metrics=[keras.metrics.Recall(top_k=10), keras.metrics.Precision(top_k=10)])
callback = keras.callbacks.EarlyStopping(monitor='auc', patience=1)
model.fit(x_train,y_train,epochs=3,batch_size=128,callbacks=[callback])

在这里插入图片描述

只在compile的metrics中加入recall,precision,没有加入auc,却使用auc作为提前终止训练的被监测数据。

需要注意的另一点,前面也说过,monitor默认为’val_loss’,是验证集的损失。但如果没有加入验证集呢?
在这里插描述

没有使用验证集,却使用了’val_loss’作为被监测数据

可以看到,虽然不会影响训练,但是由于你指定的被监测数据monitor不存在,所以没办法依此提前终止训练。
使用了验证集,才能指定验证集的评价参数作为被监测数据monitor。

Keras防止过拟合(四) Batch Normalization代码实现 结局过拟合的方法和代码实现,前面已经写过Dropout层,L1 L2正则化,提前终止训练三种,本篇介绍一下Batch Normalization和Layer Normalization两种归一化。这两种方法,最大的作用是加速训练,但对防止过拟合也有一些作用。 Batch Normalization概念 ... 阅读详情

相关推荐

基于Keras的深度学习防止过拟合的策略:学习率、正则化、dropout、权重初始化、Early Stopping等

Keras包 Keras是深度学习中非常好用的一个工具包,我在刚开始接触深度学习的时候,尝试过用pytorch、TensorFlow,但最后我还是选择了Keras,最大的原因就是两个字:简单!真的是太好理解、太过于友好了,对于初学者,又想在短时间内利用深度学习去解决问题,搞搞研究的同学,我推荐Keras。 废话就不说了,直接说本文重点吧! 过拟合 在深度学习的过程中,我们经常会遇到一个问题,就是过拟合和欠拟合!欠拟合的方法有增大数据集,优化模型等等。而过拟合是最容易出现,也是困扰大多数人的。什么是过拟合呢?

z1202010305的博客 2204

Keras防止过拟合:模型训练提前停止

EarlyStopping是Callbacks的一种,callbacks用于指定在每个epoch开始和结束的时候进行哪种特定操作,即用于提前停止训练的callbacks。之所以要提前停止训练,是因为继续训练会导致测试集上的准确率下降。那继续训练导致测试准确率下降的原因笔者猜测可能是1. 过拟合 2. 学习率过大导致不收敛 3. 使用正则项的时候,Loss的减少可能不是因为准确率增加导致的,而是因为权重大小的降低。 callback = keras.callbacks.EarlyStopping(monito

fyflalala的博客 2293

keras,FCN,mnist手写数字识别,实例,添加隐藏层,添加正则化L2,防止过拟合

正则化(Regularization) L1和L2正则都是比较常见和常用的正则化项,都可以达到防止过拟合的效果。L1正则化的解具有稀疏性,可用于特征选择。L2正则化的解都比较小,抗扰动能力强。在求解过程中,L2通常倾向让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。参数足够小,数据偏移得多一点也不会对结果...

iamcfb_的博客 1951

深度学习模型训练提前终止方法

EarlyStopping:https://keras.io/api/callbacks/early_stopping/ https://blog.youkuaiyun.com/weixin_44048809/article/details/105702314

Kola_Abner 2272

防止模型过拟合之提前终止(EarlyStopping)

防止模型过拟合之提前终止(EarlyStopping)

qq_19069557的博客 1092

芯片良率提升:从设计到制造的系统性工程实践

在半导体制造领域,良率是衡量生产效率和成本控制的核心指标,直接关系到芯片的经济效益与市场竞争力。其本质是合格芯片占总产出芯片的百分比,提升良率需要从设计源头到制造末端的全流程协同优化。从技术原理看,它涉及可制造性设计、工艺过程控制、缺陷检测与根因分析等多个复杂环节,尤其在先进制程下,随机缺陷和参数变异成为主要挑战。其技术价值不仅在于降低单颗芯片成本,更能加速产品上市、保障可靠性,并成为企业技术实力的关键体现。应用场景贯穿智能手机、数据中心、自动驾驶和人工智能等所有高端芯片领域。本文将结合【芯片制造】与【良率

weixin_42526068的博客 632

机器学习训练模型中的提前停止(Early stopping)

提前停止的作用 提前停止(英语:early stopping)是一种在使用诸如梯度下降之类的迭代优化方法时,可对抗过拟合的正则化方法。 实现 基于tensorflow平台。 #导入 from keras.callbacks import EarlyStopping 定义相关参数 montier=EarlyStopping(monitor = EarlyStopping(monitor='val_loss', min_delta=1e-3, patience=5, verbose=1, mode='auto

凡人转 1万+

大模型训练流程(四):PPO强化学习实战与调优指南

本文详细解析了大模型训练中PPO强化学习的实战应用与调优技巧,涵盖RLHF核心原理、PPO算法实现及显存优化策略。通过具体案例和代码示例,指导开发者有效提升模型回答质量与安全性,避免常见训练陷阱。

weixin_29051811的博客 437

提前终止训练:实践中的正则化与训练优化

1.背景介绍 在深度学习和机器学习领域中,训练模型是一个计算密集型的过程,需要大量的计算资源和时间。随着数据集的增加以及模型的复杂性,训练时间可能会变得非常长,甚至无法在合理的时间内完成。因此,提前终止(Early Stopping)训练变得至关重要,它可以帮助我们在模型性能达到一个满意水平后,尽快终止训练,从而节省计算资源和时间。 在这篇文章中,我们将讨论提前终止训练的核心概念,以及在实际应...

AI天才研究院 1298

专项1.CCS代码补全与快捷键优化全攻略

本文全面解析CCS开发环境的代码补全功能与快捷键优化技巧,包括内容辅助触发机制、快捷键自定义配置、编码效率提升方法等实用内容。通过详细步骤指导开发者优化CCS配置,实现高效的代码自动补全和个性化快捷键设置,显著提升嵌入式开发效率。

kotlin6android的博客 223

深入解析CycloneDDS跨域通信中的XML配置文件优化策略

本文深入解析了CycloneDDS跨域通信中XML配置文件的优化策略,重点介绍了网络接口配置、多播设置、性能调优参数及复杂场景下的配置案例。通过实战技巧和调试方法,帮助开发者在SoC环境中实现高效稳定的跨域通信,提升系统性能。

soda5的博客 688

模型训练终止训练方法

1. 设置固定的epochs; 2. 模型终止训练与val_loss值相关,根据keras函数early stopping终止迭代。 # early stoppping from keras.callbacks import EarlyStopping early_stopping = EarlyStopping(monitor='val_loss', patience=50, verbose=2) # 训练 history = model.fit(train_X, train_y, epochs=3

qq_21466543的博客 1万+

AI应用安全 - Prompt注入攻击

随着大模型的爆火,各行各业都在使用大模型进行智能化改造。但是如何做一个可靠的大模型应用,就需要考虑各种安全问题。本文主要介绍一种常见的安全问题,即prompt注入攻击,并介绍一些防范手段。Prompt Injection Attack(提示注入攻击)是针对大型语言模型(LLM)的一种新兴安全威胁,攻击者通过精心构造的输入提示(prompt)来操纵模型行为,使其产生非预期输出或执行恶意操作。它主要包括两种注入方式,一是直接注入,而是间接注入。

sinat_28694519的博客 1932

过拟合检测:使用Keras中的EarlyStopping解决过拟合问题

大家好,我是默语,擅长全栈开发、运维和人工智能技术。过拟合是深度学习模型训练中常见的问题之一,会导致模型在训练集上表现良好,但在测试集上表现不佳。Keras中的EarlyStopping回调函数是解决过拟合问题的有效方法之一。本文将详细介绍如何使用EarlyStopping来检测和解决过拟合问题,并提供相应的代码示例,帮助大家在实际项目中更好地应用这一技术。过拟合是指模型在训练数据上表现优异,但在测试数据上表现不佳的现象。这通常是由于模型过于复杂,捕捉到了训练数据中的噪声和细节,而这些细节并不具有普遍性。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2万+

计量经济学tempdisagg的python库:年度时序变月度

计量经济学tempdisagg的python库:年度时序变月度

素质云笔记 1528

数据库系统工程师软考备战:第三篇 - SQL语言深入解析与应用

​​创建表​​​修改表​​​删除表​。

Programming Talk 122

Keras防止过拟合(一)Dropout层源码细节

在使用深度学习模型时,会遇到两种问题,过拟合和欠拟合。其中,解决欠拟合的方法有增大数据集,优化模型等等,根据具体问题具体对待。过拟合的问题,可以通过Dropout,添加L1,L2正规项等等很简单的方法解决,网上有许多文章介绍这些方法。但怎么使用keras实现,实现中的细节问题,却缺少描述。我就写写解决过拟合这方面的博客,刚好也是督促自己学习! Dropout原理 有许多优质文章讲过Dropout操作的原理,大家可以去搜一搜。我在这里只简单提一下,重点讲解Keras是如何实现的。 上图是在神经网络中使用Dr

flash_zhj的博客 5509

SAP 系统中的数字签名解决方案及应用案例分析

在当前企业信息化及数字化转型的大背景下,数据安全与身份认证显得尤为重要。数字签名技术作为保障数据真实性和完整性的重要手段,在 SAP 系统中得到了广泛应用。本文将详细探讨 SAP 系统中部分应用场景如何利用数字签名技术满足业务需求,涵盖 SAP Single Sign-On、质量管理、过程工业生产计划以及 SAP ArchiveLink 内容服务器等方面,力求通过深入解读,帮助读者更好地理解和应用这一关键技术。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 527

Keras中的EarlyStopping

EarlyStopping(早停)作用:如果设置了一个很大的epochs的时候,在模型训练到一半epochs的时候,accuracy或者loss已经不再变化,模型甚至有出现过拟合迹象。EarlyStopping就可以提前终止训练。 参数: keras.callbacks.EarlyStopping( monitor='val_loss', patience=0, verbose=0, mod...

weixin_44048809的博客 3728

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

提前终止训练:深度学习模型的速度与效率

1.背景介绍 深度学习已经成为人工智能领域的核心技术之一,它在图像识别、自然语言处理、语音识别等方面取得了显著的成果。然而,深度学习模型的训练过程通常需要大量的计算资源和时间,这限制了其在实际应用中的扩展性和效率。因此,提前终止(Early Stopping)训练技术成为了一种重要的方法,以加速模型训练过程,同时保证模型的性能。 在本文中,我们将从以下几个方面进行深入探讨: 背景介绍 核心...

AI天才研究院 807

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[深度学习] keras的EarlyStopping使用与技巧

Early Stopping是什么 具体EarlyStopping的使用请参考官方文档和源代码。 EarlyStopping是Callbacks的一种,callbacks用于指定在每个epoch开始和结束的时候进行哪种特定操作。Callbacks中有一些设置好的接口,可以直接使用,如’acc’, 'val_acc’, ’loss’ 和 ’val_loss’等等。 EarlyStopping...

摩登都市天空---专栏 6万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

keras中的callbacks详解之EarlyStopping

keras中的callbacks整体学习见: keras中的callbacks详解 1. 认识Early Stop early stop是训练模型的过程中,避免过拟合,节省训练时间的一种方法 2. keras中的EarlyStopping 官方api:https://keras.io/api/callbacks/early_stopping/ 上图是官方给的使用方法说明,部分参数释义如下: monitor: 监控指标,如“val_loss” min_delta: 认为监控指标有提升的最小提升值。如果变化

要加油 6964

Keras防止过拟合(五)Layer Normalization代码实现

解决过拟合的方法和代码实现,已经写过Dropout层,L1 L2正则化,提前终止训练,上一篇文章写了Batch Normalization,本篇将介绍另一个Normalization,Layer Normalization. 1.Batch Normalization的缺陷(为何要使用Layer Normalization) BN的缺陷主要有两点: 1.受到batch大小的影响 上一节通过BN的概念和代码,已经看出,BN中计算的是每个batch样本的均值和方差,再将其用到该batch中进行归一化。因此,当b

flash_zhj的博客 8757

Keras的回调函数ReduceLROnPlateau 训练过程优化学习率

优化模型的时候,当模型评价指标不再变化的时候,有可能是学习率已经不适合当前的模型,需要调小一些。在训练初期,学习率设置大一些可以加速模型训练;在模型后期,将学习率调小一些,可以使得模型更加精确。我们可以使用keras中的回调函数ReduceLROnPlateau。可以与EarlyStopping配合使用。 monitor:监测的值,可以是accuracy,val_loss,val_accura...

weixin_44048809的博客 3万+

提升神经网络的性能-防止过拟合

整理的神经网络训练过程中防止过拟合的手段,不断更新中

sky_ying的博客 699

防止神经网络模型过拟合的方法及keras代码实现

最近这段时间,有网友问我,自己的模型存在过拟合问题,就是模型其实训练的已经很好了,但是在测试集上的表现性能不佳。这些常见的模型比如卷积神经网络、循环神经网络、自编码器等等。 这种在训练集上表现的好,在测试集上效果差,模型泛化能力弱,则是典型的过拟合问题。下面将结合实际介绍几种解决过拟合的方法。 过拟合问题 由于模型过于复杂,学习能力过强,而用于训练的数据相对于复杂模型来说比较简单,所有模型会去学习数据中隐含的噪声,导致模型学不到真正数据集的分布,如下图所示,红色线就是由于模型过分的拟合了训练数据集,导

haosen 4418
上一篇: keras防止过拟合(二) L1正则化与L2正则化源码细节和在自定义层中加入
下一篇: Keras防止过拟合(四) Batch Normalization代码实现
flash_zhj
博客等级 码龄9年 18粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值