Keras实战:用Early Stopping防止模型过拟合的5个实用技巧

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

Keras实战:用Early Stopping防止模型过拟合的5个实用技巧

你是否经历过这样的场景:精心设计的神经网络模型在训练集上表现近乎完美,损失曲线一路下滑,准确率节节攀升,让你满怀信心。然而,当你将模型部署到真实场景或测试集上时,性能却一落千丈,预测结果变得不可靠。这种令人沮丧的落差,正是机器学习中经典的“过拟合”现象在作祟。对于使用Keras框架的开发者,尤其是刚踏入深度学习领域的实践者来说,过拟合几乎是模型训练路上必经的一道坎。它不像代码报错那样直接,更像是一种隐形的性能损耗,悄无声息地侵蚀着模型的泛化能力。

幸运的是,我们手中有一件强大且易于使用的武器——早停法(Early Stopping)。它并非一个复杂的算法革新,而是一种融合了智慧与经验的训练策略。其核心思想朴素而深刻:在模型对训练数据“学得过好”、开始记忆噪声而非学习规律之前,果断地停止训练。在Keras中,EarlyStopping作为一个内置的回调函数(Callback),让这一策略的实现变得异常简单。但简单并不意味着随意,如何设置监控指标、如何选择patience参数、是否要恢复最佳权重,每一个细节都影响着最终模型的成败。本文将抛开繁复的理论推导,直击工程实践,分享五个经过实战检验的Early Stopping使用技巧,帮助你在下一次训练中,更从容地驾驭模型,在过拟合的悬崖边稳稳刹住车。

1. 理解过拟合与早停法的本质:不止是“提前停止”

在深入技巧之前,我们有必要重新审视一下过拟合和早停法。很多初学者将其简单理解为“看到验证集损失不降了就停”,这虽然没错,但过于片面,容易导致在实践中机械套用,效果不佳。

过拟合的本质是模型复杂度超过了数据本身所蕴含的规律复杂度。想象一下你用一台超高精度的仪器去测量一个本身存在固有误差的物理量,仪器最终会连测量噪声都一丝不苟地记录下来,但这对于预测未知测量毫无帮助。神经网络也是如此,当它的参数足够多、训练时间足够长时,它有能力完美复现训练集中的每一个样本,包括那些偶然的、不具备普遍性的特征(噪声)。早停法正是通过控制“训练时间”这个维度,来隐式地降低模型的有效复杂度,从而起到正则化的效果。

在Keras的EarlyStopping回调中,这种控制是通过持续监控一个或多个验证集指标来实现的。与L1/L2正则化在损失函数中直接添加惩罚项、Dropout在训练时随机丢弃神经元不同,早停法是一种动态的、基于评估的正则化。它的优势在于:

  • 无需修改模型结构或损失函数:对现有训练流程侵入性最小。
  • 自动寻找训练轮次:省去了手动反复试验epochs参数的繁琐。
  • 节省计算资源:避免在模型性能不再提升后继续进行无意义的训练。

然而,它的挑战也在于此:其效果高度依赖于验证集的质量、监控指标的选择以及停止策略的设定。一个糟糕的验证集划分或一个不敏感的监控指标,可能会让早停法提前扼杀一个尚有潜力的模型,或者迟迟无法阻止一个已经过拟合的模型。

注意:早停法并非万能。当验证集误差曲线非常震荡(例如使用较大批量大小或较高学习率时),或者学习任务本身的数据分布极其复杂时,仅靠早停可能不够,通常需要与Dropout、权重衰减等其他正则化方法结合使用。

2. 核心技巧一:精心选择与组合监控指标

monitor参数是EarlyStopping的灵魂,它决定了回调函数“看什么”来决定是否停止。默认值是‘val_loss’,即验证集损失。但在不同场景下,单一指标可能具有误导性。

2.1 为何不能只看val_loss?

验证集损失是模型预测误差的综合体现,通常是一个平滑下降后趋于平稳或上升的曲线。但在某些情况下:

  • 任务不平衡:在分类任务中,如果某一类样本数量极少,损失函数可能被主导类“绑架”。即使验证集损失在下降,少数类的识别精度可能早已停滞甚至恶化。
  • 指标与损失不对齐:我们最终关心的往往是准确率、F1-score、AUC等业务指标,而损失函数(如交叉熵)只是这些指标的代理。有时损失的小幅波动,对应着关键指标的平台期。

2.2 多指标监控策略

Keras允许我们自定义指标并监控它。一个更稳健的策略是同时监控损失和核心业务指标。虽然EarlyStopping回调本身一次只能监控一个指标,但我们可以通过以下方式实现“软性”的多指标监控:

  1. 定义自定义回调:继承tf.keras.callbacks.Callback类,在on_epoch_end方法中同时检查多个指标,实现更复杂的停止逻辑。
  2. 采用“或”逻辑:分别设置两个EarlyStopping回调,一个监控‘val_loss’,另一个监控‘val_accuracy’(或‘val_f1’等),并将它们的patience设置得相对保守。模型训练会在任一条件满足时停止。这可以通过Keras的Callback列表轻松实现。
from tensorflow import keras
from tensorflow.keras import callbacks

# 方法2示例:设置两个EarlyStopping回调
early_stop_loss = callbacks.EarlyStopping(
    monitor='val_loss',
    patience=10,
    verbose=1,
    restore_best_weights=True
)

early_stop_acc = callbacks.EarlyStopping(
    monitor='val_accuracy',
    patience=15, # 对于准确率可以给更多耐心,因为它可能波动
    mode='max', # 注意模式是‘max’,因为我们希望准确率最大化
    verbose=1,
    restore_best_weights=True
)

model.fit(
    x_train, y_train,
    validation_data=(x_val, y_val),
    epochs=100,
    callbacks=[early_stop_loss, early_stop_acc] # 同时加入回调列表
)

指标选择参考表:

任务类型首要推荐监控指标次要/辅助监控指标说明
平衡分类val_accuracyval_loss准确率直观,损失函数可帮助判断优化是否稳定。
不平衡分类val_f1_score 或 val_aucval_lossF1或AUC对类别不平衡更鲁棒。需自定义指标。
多标签分类val_precision_at_k 或 自定义宏/微平均F1val_loss单一准确率意义不大,需符合业务需求的聚合指标。
回归任务val_loss (如MSE, MAE)-回归任务损失通常与最终评估指标一致。
序列生成val_bleu (机器翻译) / val_rouge (摘要)val_loss使用任务特定的评估指标,损失作为参考。

2.3 理解mode参数

mode参数必须与monitor指标的含义匹配:

  • ‘auto’:自动推断(默认)。通常能正确判断。
  • ‘min’:当监控指标停止下降时触发。用于损失类指标,如val_loss, val_mse。
  • ‘max’:当监控指标停止上升时触发。用于准确率、F1等指标,如val_accuracy, val_f1。

设置错误会导致回调永远不触发或过早触发。例如,监控val_accuracy却使用mode='min',那么准确率越高(数值越大)反而会被认为是“变差”,逻辑完全相反。

3. 核心技巧二:科学设置patience参数:寻找“耐心”的平衡点

patience参数定义了在监控指标不再改善后,还要等待多少个epoch才终止训练。这是早停法中最需要经验和技巧的参数之一。

3.1 patience太小或太大的后果

  • patience太小(如1-3):模型容易因为验证指标的正常波动而提前终止。深度学习优化过程本身是带有随机性的(如随机梯度下降),验证集指标出现1-3个epoch的波动非常常见。过早停止会让模型无法充分学习,导致欠拟合。
  • patience太大(如20-30):模型在明显过拟合后还会继续训练很长时间,浪费计算资源。更重要的是,如果设置了restore_best_weights=True,虽然最终能恢复最佳权重,但训练过程本身已经做了大量无用功。如果没设置,则拿到的是过拟合严重的最终权重。

3.2 如何确定合适的patience?

没有一个放之四海而皆准的值,但可以遵循以下步骤和原则:

  1. 进行几次探索性训练:先设置一个较大的epochs(如100或200),并暂时禁用早停,让模型完整训练一次。观察验证集损失/准确率曲线。

    • 如果曲线平滑下降后平稳上升,那么从拐点到曲线开始持续恶化的epoch数,大致就是patience的参考值。
    • 如果曲线震荡剧烈,说明你的优化过程不稳定(可能学习率太高、批量大小太小)。此时应首先调整优化器参数,而不是盲目增大patience。
  2. 根据任务和数据量估算:

    • 对于数据量小、模型简单的任务,模型收敛快,过拟合也来得快,patience可以设小一些(5-10)。
    • 对于数据量大、模型复杂的任务(如训练大型CNN或Transformer),收敛慢,可能需要更多epoch才能看到提升,patience应设大一些(10-20甚至更高)。训练这类模型时,前期验证指标可能长期平台期,然后突然下降,需要足够的耐心。
  3. 与学习率调度器联动考虑:如果你同时使用了学习率衰减回调(如ReduceLROnPlateau),那么patience的设置需要与之协调。通常,早停的patience应该大于学习率衰减的patience。逻辑是:先尝试通过降低学习率来跳出局部最优或平台期,如果连学习率衰减都救不了,再考虑停止训练。一个常见的比例是,早停patience是学习率衰减patience的2-3倍。

# 早停与学习率衰减配合使用的示例
lr_scheduler = callbacks.ReduceLROnPlateau(
    monitor='val_loss',
    factor=0.5,    # 学习率减半
    patience=5,     # 等待5个epoch无改善
    min_lr=1e-6,
    verbose=1
)

early_stopper = callbacks.EarlyStopping(
    monitor='val_loss',
    patience=15,    # 为学习率衰减留出足够时间(5*2=10,再加一些缓冲)
    verbose=1,
    restore_best_weights=True
)

model.fit(..., callbacks=[lr_scheduler, early_stopper])

4. 核心技巧三:务必启用restore_best_weights并理解其机制

这是Keras EarlyStopping中一个极其重要却常被忽略的参数。它的默认值是False,但在绝大多数情况下,你都应该将其设置为True。

4.1 它解决了什么问题?

假设patience=10,模型在第50个epoch达到最佳验证集精度,之后开始过拟合。训练持续到第60个epoch(因为等了10个epoch没改善)后停止。如果restore_best_weights=False,你最终得到的模型权重是第60个epoch的,此时模型已经过拟合了10个epoch。你所有的等待和监控都白费了!

设置为True后,回调函数会在内部持续追踪monitor指标的历史最佳值及其对应的模型权重。当训练因早停而终止时,它会自动将模型的权重回滚到历史最佳记录点。这样,你得到的就是在验证集上表现最好的那个模型快照。

4.2 实践中的注意事项

  • 内存开销:启用此功能意味着回调需要在内存中保存一份模型权重的副本(最佳状态)。对于参数量极大的模型(如数十亿参数),这可能带来显著的内存压力。但在常见的百万至亿级参数模型中,这个开销通常是可接受的。
  • 与ModelCheckpoint回调的异同:ModelCheckpoint回调可以将最佳模型权重保存到硬盘文件。两者功能有重叠,但可以互补:
    • ModelCheckpoint:用于长期保存模型检查点,防止训练中断,可以选择保存所有检查点或仅保存最佳。
    • EarlyStopping with restore_best_weights=True:用于在训练结束后,内存中的模型对象直接就是最佳模型,方便立即进行评估或推理,无需再从硬盘加载。
    • 最佳实践:同时使用两者。让ModelCheckpoint保存最佳模型到文件作为持久化备份,同时让EarlyStopping恢复最佳权重到内存方便后续操作。
# 结合使用 ModelCheckpoint 和 EarlyStopping 的最佳实践
checkpoint = callbacks.ModelCheckpoint(
    'best_model.h5',
    monitor='val_accuracy',
    save_best_only=True, # 只保存最好的
    mode='max',
    verbose=1
)

early_stop = callbacks.EarlyStopping(
    monitor='val_accuracy',
    patience=12,
    mode='max',
    restore_best_weights=True, # 内存中恢复最佳
    verbose=1
)

history = model.fit(
    ...,
    callbacks=[checkpoint, early_stop]
)

# 训练结束后,model对象已经是具有最佳权重的模型,可以直接使用
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"测试集准确率: {test_acc:.4f}")

# 同时,硬盘上也有‘best_model.h5’文件可供后续加载

5. 核心技巧四:设计鲁棒的验证集与基线对比

早停法的有效性建立在验证集能够真实反映模型泛化能力的假设上。如果验证集设计不当,早停法可能会做出错误的决策。

5.1 验证集的构建原则

  • 独立同分布:验证集必须与测试集、未来生产数据保持相同的分布。这意味着它们应该来自同一个数据源,并经过相同的预处理流程。
  • 足够规模:验证集不能太小,否则评估指标会有很大的随机误差,导致早停判断像“掷骰子”。一个经验法则是,验证集应至少包含几千个样本,或者占整个训练集(非测试集)的10%-20%。
  • 避免数据泄露:确保训练集和验证集之间没有重叠或隐含的联系。例如,在时序预测中,不能用未来的数据验证过去;在涉及同一个体(用户、设备)的数据中,同一个体的所有样本必须只出现在训练集或验证集之一。

5.2 建立无早停的基线

在引入早停法之前,一个很好的习惯是先进行一次无任何正则化(包括早停)的“过拟合实验”。

  1. 在小部分数据上,用足够多的epoch训练你的模型,直到训练损失接近零,训练准确率接近100%。这证明了你的模型有能力过拟合。
  2. 观察训练和验证曲线。清晰的“剪刀差”(训练指标持续变好,验证指标先好后坏)是过拟合的典型标志,也说明了早停法在该任务上是必要的。
  3. 这次实验的验证曲线,为你后续设置patience和选择monitor指标提供了最直观的参考。

5.3 结合交叉验证使用早停

对于数据量非常有限的任务,单一的验证集可能不可靠。此时,可以将早停法与交叉验证结合。流程如下:

  1. 将数据分成K折。
  2. 对于每一折,将其作为验证集,其余作为训练集,并配置EarlyStopping进行训练。
  3. 记录每一折早停发生的epoch数以及最终的最佳验证分数。
  4. 分析这些epoch数的分布(如平均值、中位数),这个值可以作为在全量数据上重新训练时,设置总epochs或patience的参考。同时,K个验证分数的平均可以作为模型性能的更稳健估计。

6. 核心技巧五:进阶策略与故障排查

掌握了基础技巧后,一些进阶策略和问题诊断方法能让你更好地驾驭早停法。

6.1 处理震荡的验证曲线

如果验证曲线上下震荡剧烈,使得早停法难以判断趋势,可以尝试:

  • 平滑指标:不是直接监控原始指标,而是监控其移动平均。这可以通过自定义回调实现,在on_epoch_end中计算最近N个epoch验证指标的平均值,并基于此进行判断。
  • 调整优化器参数:震荡往往源于学习率过大或批量大小过小。尝试降低学习率或增大批量大小。
  • 使用min_delta参数:EarlyStopping有一个min_delta参数,定义了“改善”的最小阈值。只有当监控指标的变化超过这个阈值时,才被认为是一次改善。将其设置为一个小的正数(如min_delta=0.001或min_delta=0.0001),可以过滤掉微小的、无意义的波动,避免被噪声干扰。
early_stop = callbacks.EarlyStopping(
    monitor='val_loss',
    min_delta=0.001, # 变化小于0.001不认为是改善
    patience=10,
    verbose=1,
    restore_best_weights=True
)

6.2 早停法与其他正则化的协同

早停法是一种正则化,可以与其他正则化方法叠加使用,效果通常更好:

  • 与Dropout结合:Dropout在训练时随机丢弃神经元,强制网络学习更鲁棒的特征。早停法则从训练时长上控制复杂度。两者从不同角度抑制过拟合,是常见的黄金组合。
  • 与L2权重衰减结合:在优化器(如AdamW)中设置权重衰减,惩罚大的权重。早停法与之协同,能更有效地获得一个既简单又泛化能力强的模型。
  • 与数据增强结合:数据增强通过创造更多的训练样本来增加数据多样性。这本身能极大地缓解过拟合。在此基础上的早停,其“停止点”通常会来得更晚,因为模型需要更多时间来学习增强后数据中更通用的特征。

6.3 常见问题排查清单

当早停法效果不理想时,可以按此清单检查:

现象可能原因检查与解决思路
训练过早停止,模型欠拟合1. patience设置太小。
2. 验证集划分有问题,或与训练集分布差异大。
3. 监控指标选择不当(如回归任务监控R2,其值可能为负且波动大)。
1. 增大patience,观察完整训练曲线。
2. 检查数据划分代码,确保随机打乱且分布一致。
3. 尝试监控更稳定的指标,如val_loss。
训练迟迟不停止,明显过拟合1. patience设置太大。
2. 验证集数据量太小,指标噪声大,无法反映过拟合。
3. 未启用restore_best_weights,最终模型是过拟合的。
1. 减小patience。
2. 增大验证集比例或绝对数量。
3. 务必设置restore_best_weights=True。
验证曲线无平台或上升期,一直缓慢改善1. 模型可能尚未收敛,训练轮次epochs总设置不足。
2. 学习率可能太小。
1. 增加总的epochs设置,让训练继续。
2. 检查学习率,或使用学习率调度器。
每次运行早停的epoch数差异很大1. 训练过程随机性大(如未设随机种子)。
2. 数据量小,验证集评估本身方差大。
1. 固定所有随机种子(Python, NumPy, TensorFlow)。
2. 考虑使用交叉验证来获得更稳定的早停决策参考。

在我自己的项目经验里,早期也吃过不少亏。比如有一次做图像分类,验证集准确率在95%附近来回震荡了二十几个epoch,我设置的patience=10导致训练中途停止,后来发现只要再多等5个epoch,准确率就能突破并稳定在96.5%以上。自那以后,对于震荡期较长的任务,我养成了先用一次长训练“探路”的习惯,摸清曲线脾气再设置参数。另一个教训是关于restore_best_weights的,曾经有次忘了设置,结果用最终过拟合的模型提交了结果,效果大打折扣,这个低级错误让我记忆深刻。早停法就像给训练过程安装了一个智能刹车,调得好,它能让你在最佳时刻稳稳停住;调不好,要么提前熄火,要么冲下悬崖。希望这五个技巧能帮你调校好这个刹车,更高效地训练出泛化能力强大的模型。

早停(Early Stopping)原理与工业级实战:从过拟合防控到自动调参 早停(Early Stopping)是机器学习中应对过拟合的核心正则化技术,其本质是在模型泛化能力达到峰值时主动终止训练,避免偏差-方差权衡失衡。它不修改模型结构,而是基于验证集指标动态监控训练进程,通过patience、min_delta等参数构建可解释的风险预警机制。相比L1/L2正则化,早停具有反馈驱动、时机可控、调试直观等工程优势,广泛应用于回归、分类及序列建模任务。在深度学习框架(如TensorFlow/Keras)、树模型(XGBoost)和线性模型(Scikit-Learn)中均有适配实现,但 阅读详情

相关推荐

早停(Early Stopping)原理与工程实践全解析

早停(Early Stopping)是机器学习中一种关键的动态正则化技术,本质是对偏差-方差权衡的实时响应,通过监控验证集性能来防止过拟合。其核心原理在于识别模型泛化能力由升转降的拐点,避免在训练损失持续下降时陷入对噪声的记忆。相比L1/L2等静态正则化,早停具备数据驱动、无需先验假设、适配任务分布等工程优势。实际应用中,它高度依赖验证集质量、耐心值(patience)设置、最小变化阈值(min_delta)抗抖动能力,以及restore_best_weights等关键开关的正确启用。广泛应用于Scikit

weixin_29031057的博客 349

Keras实战:用Early Stopping防止模型过拟合的5个关键技巧

本文详细介绍了在Keras中使用Early Stopping(早停法)防止模型过拟合的5个关键技巧。从监控指标的选择到动态调整patience参数,再到restore_best_weights的优化方案,每个技巧都配有实用代码示例和可视化分析。这些方法能有效提升模型在验证集上的表现,适用于分类、回归等多种深度学习任务场景。

weixin_30924087的博客 530

早停(Early Stopping)原理与实战:轻量级正则化的核心技巧

早停(Early Stopping)是一种基于验证性能动态终止训练的泛化保障机制,其本质是在偏差-方差权衡中捕捉模型泛化能力峰值的关键决策点。它不修改模型结构或损失函数,而是通过监控验证损失曲线的U型谷底,实现无侵入式正则化。相比L1/L2惩罚或Dropout,早停零计算开销、超参直观(patience/min_delta)、全模型通用,特别适用于数据噪声大、特征工程未臻完善的工业场景。本文结合SGDRegressor、GradientBoostingRegressor与Keras实践,详解如何识别过拟合拐

weixin_29988907的博客 326

【Python数据分析300个实用技巧】99.机器学习与深度学习之模型调优必学:用Early Stopping防止过拟合

早停法就像给模型训练装上了智能导航系统,但记住——它只是一个工具,不是银弹。关键是要结合业务场景灵活调整参数,就像老司机开车,既不能猛踩油门,也不能急刹车。编程路上最可怕的不是犯错,而是重复犯同样的错误。当你下次看到验证集曲线开始波动时,记得今天的分享,让早停法成为你的防过拟合护盾。保持好奇,持续精进。代码的世界里,每个epoch都是新的开始,每个callback都在书写新的可能。你,准备好迎接下一个挑战了吗?

1093

神经网络过拟合诊断与实战防御指南

过拟合是机器学习模型泛化能力失效的核心问题,本质是模型将训练数据中的噪声误判为真实规律,导致在未知数据上性能骤降。其根源涉及模型容量过剩、数据信息密度不足、训练过程失控及特征工程失当四大维度。技术价值在于提升模型鲁棒性、部署稳定性与业务可信度。典型应用场景涵盖图像分类、医疗影像分析、金融风控与工业缺陷检测等数据受限或噪声敏感领域。本文结合梯度热力图分析、动态增强策略、正则化组合拳及标签平滑等关键技术,系统拆解从诊断到干预的全流程方法论。

dibeichan3033的博客 471

三招零代码过拟合防治法:Dropout剂量、标签平滑与早停策略

过拟合是深度学习模型泛化能力不足的核心表现,本质在于模型在高维空间中习得过于狭窄的决策边界,导致对数据扰动和分布偏移极度敏感。其技术原理涉及模型容量、训练噪声与优化动态的耦合失衡;通过引入结构化随机性(如Dropout)、语义不确定性建模(如Label Smoothing)和训练过程动态监控(如Early Stopping),可显著提升模型鲁棒性与部署稳定性。这三类正则化方法无需修改网络结构、不增加推理开销,已在工业级CV/NLP项目中验证为轻量高效的基础防护手段,广泛适用于小样本分类、噪声标注场景及边缘部

weixin_34302798的博客 303

Early Stopping工程实践:从防过拟合到泛化衰减控制

Early Stopping(早停)是机器学习训练中保障模型泛化能力的关键机制,其核心原理并非简单阻止过拟合,而是动态监测验证集指标的泛化衰减拐点。通过科学设定patience、自适应min_delta与多指标协同监控(如AUC、F1、mAP),可显著提升模型在未知数据上的鲁棒性与业务效果。该技术广泛应用于深度学习调参、大模型微调(如LoRA)、时间序列预测及小样本医疗图像分割等场景,兼具计算效率优化与过拟合预防双重价值。本文聚焦PyTorch/TensorFlow分布式环境下的落地难点,覆盖DDP同步、验

diegouyi3472的博客 370

正则化本质:从过拟合治理到模型泛化能力构建

正则化是机器学习中应对过拟合的核心技术机制,其本质是在损失函数中引入参数复杂度约束,通过L1(Lasso)、L2(Ridge)或混合范数(ElasticNet)实现特征筛选或系数收缩。它并非调参玄学,而是建模过程中对模型容量、数据噪声与泛化目标的系统性权衡。技术价值在于提升模型鲁棒性、增强可解释性、缓解多重共线性,并支撑高维稀疏场景下的稳定预测。典型应用场景涵盖金融风控(需L1驱动的可解释建模)、工业预测性维护(依赖Ridge保障系数稳定性)及推荐系统(ElasticNet平衡稀疏与相关性)。本文深入剖析正

duiker 423

Early Stopping不是‘万能药’:盘点TensorFlow/Keras训练中早停策略用错的3种场景

本文探讨了TensorFlow/Keras训练中Early Stopping(早停策略)的常见误用场景,揭示了验证集划分、学习率设置和数据预处理不当导致的早停失效问题。通过实际案例和技术方案,帮助开发者正确应用早停策略,避免模型性能损失,提升深度学习训练效果。

dienangpiao2051的博客 408

keras构建前馈神经网络(feedforward neural network)进行分类模型构建基于早停法(Early stopping)

keras构建前馈神经网络(feedforward neural network)进行分类模型构建基于早停法(Early stopping) 当我们训练深度学习神经网络的时候通常希望能获得最好的泛化性能(generalization performance,即可以很好地拟合数据)。但是所有的标准深度学习神经网络结构如全连接多层感知机都很容易过拟合:当网络在训练集上表现越来越好,错误率越来越低的时候,实际上在某一刻,它在测试集的表现已经开始变差。 早停法(Early stopping)的主要.

data+scenario+science+insight 726

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

本文将带你从0到1完整搭建一套基于LangChain和AutoGen的多智能体AI投研系统首先,我们会一起梳理智能投研的核心痛点、金融数据的独特性,以及为什么传统AI Agent,尤其是多智能体协同架构,是破局的唯一最优解;RAG检索增强生成(但这次是金融领域定制化的,包括向量检索+时序数据检索+知识图谱检索的“三元检索增强”)、AutoGen多智能体协同框架。

软件工程实践的博客 381

5.训练策略:优化深度学习训练过程的实践指南——大模型开发深度学习理论基础

定义:Early Stopping 是一种监控验证集表现,当连续若干个训练周期(Epoch)内验证性能不再改善时,提前终止训练的策略。作用防止模型在训练数据上过拟合,确保模型在未见数据上有良好泛化能力。节省计算资源,避免不必要的训练周期浪费时间。定义:Warmup 策略是在训练初期逐步增加学习率的做法,避免模型刚开始训练时因过高的学习率导致梯度不稳定或损失震荡。作用稳定训练:使模型在初始阶段以较小的步幅学习,逐渐适应训练数据分布。防止梯度问题。

开源AI 专属 UI——papyrai-ui。《千界明彻录》(故事形式构建元思维)——胡说小说。更多思辨内容在公众号。 2154

Matlab2018a崩溃解决的办法No sandbox or build area path

Matlab 2018a (No sandbox or build area path)出现崩溃后需要使用terminal进行如下操作: cd /home/david/MySoft/MATLAB/R2018a/bin/glnxa64 (你的matlab路径) mkdir exclude mv libfreetype* exclude/ 执行后图片如下: 如果你用的Windows系统,请手动按照上面步骤剔除了dll。 Matlab 2018a (No sandbox or build are

David Xiao 1万+

如何在TensorFlow中实现早停(Early Stopping)?

在TensorFlow中,通过EarlyStopping回调可有效防止模型过拟合,自动在验证性能不再提升时终止训练。结合monitor、patience和restore_best_weights等关键参数,能精准捕捉最佳模型状态。配合ModelCheckpoint与TensorBoard,还可构建可追溯的自动化训练闭环,显著提升训练效率与稳定性。

weixin_28793831的博客 728

黑群晖二合一已损毁_手动修复黑群晖已损毁磁盘空间

lz的用法是这样的,一个中古级mac mini 2011上装有vmware esxi 7.6, 然后上面挂载了lz的华芸Asustor Nas的iscsi空间,lz用的是basic volume,然后esxi上面有虚拟的黑群晖6.2.2-24922,黑群晖的docker里跑着不可描述软件,但是发现下载速度过快时,比如有好几个文件同时下载,总速度超过60MB/s以后storage manager里很...

weixin_39669629的博客 1万+

LangChain与SkillLite集成:AI Agent安全沙箱实践

在AI与自动化技术领域,安全沙箱是实现可信计算的核心机制。其原理是通过资源隔离与权限控制,构建受限的执行环境。技术价值在于平衡功能开放性与系统安全性,尤其适用于处理用户提交的非受信代码或敏感数据。典型应用场景包括AI插件系统、在线代码评测平台等。本文以LangChain框架与SkillLite沙箱的深度集成为例,详解如何通过命名空间隔离、cgroups限制等机制,为AI Agent赋予安全执行动态技能的能力。其中涉及的关键技术点包括Python运行时隔离、动态资源配额管理,以及如何防范Shell注入等常见攻

weixin_34189116的博客 405

PyTorch/Keras 早停法实战:验证集损失 5 轮不降自动停止,避免过拟合

本文深入探讨了PyTorch和Keras中早停法(Early Stopping)的工程实践,通过验证集损失监控实现自动停止训练,有效防止模型过拟合。文章提供了完整的代码实现和量化对比实验,展示了早停法在减少训练时间、提升模型性能方面的显著优势,并给出了参数设置和特殊场景处理的实用建议。

weixin_33402252的博客 312

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1053

Memind Open API参考:/open/v1记忆提取、commit与sync写入语义详解(完整端点清单)

Memind 是一个面向 AI Agent 的 Java 自进化认知记忆与上下文引擎。本文围绕它的 **Memind Open API**(`/open/v1`)展开,详解记忆提取、commit 与 sync/async 写入语义,并附上完整端点清单,帮你一次吃透这套记忆引擎 API 的用法。 [![Memind 自进化记忆与上下文引擎](https://raw.gitcode.com/gh_m

gitblog_07852的博客 392

告别密码烦恼:用Windows Server NPS给公司Wi-Fi和有线网加一道MAC地址白名单(附H3C交换机配置)

本文详细介绍了如何利用Windows Server NPS(网络策略服务器)与H3C交换机实现MAC地址白名单认证,为企业Wi-Fi和有线网络提供零密码安全方案。通过配置NPS服务器、网络策略及H3C交换机联调,实现无感知认证体验,降低运维负担,同时满足审计追溯需求。适用于中小企业网络管理,提升安全性与便捷性。

weixin_42535703的博客 367

从封装到先进封装:一文讲透Chiplet、2.5D/3D堆叠与系统集成

封装是芯片产业链中连接硅片与电路板的桥梁,承担物理保护、电气连接、散热与机械支撑等核心任务。传统封装从DIP、QFP发展到BGA,通过提升引脚密度满足早期性能需求。随着摩尔定律放缓,单纯缩小晶体管尺寸难以为继,先进封装应运而生,其核心理念从“封装单颗芯片”转向“系统级高密度集成”。扇出型封装、2.5D硅中介层、3D堆叠、Chiplet和系统级封装等技术,通过微米级互连和垂直堆叠,大幅提升I/O密度与带宽,成为AI芯片、HBM存储、高性能计算等领域的关键支撑。本文梳理先进封装的技术演进、分层架构与工程难点,帮

weixin_29185167的博客 369

@arizeai/phoenix-evals:用 TypeScript 构建 LLM 评估器与分类指标评估体系

本指南围绕 Phoenix 开源仓库中的 TypeScript 评估库 `@arizeai/phoenix-evals`([js/packages/phoenix-evals/README.md](https://link.gitcode.com/i/c46c386fdeebc5d50f1332520b855839))展开。该库提供一套框架无关(vendor agnostic)的 TypeScri

gitblog_00070的博客 499

养龙虾之_因特尔UHD/ULtra/Arc核显跑大模型_安装ollama_跑qwen3.5:0.8b/9b_使用copaw1.0.1测试_并配置copaw技能效果炸裂---AI大模型应用探索0019

摘要:本文探讨了利用Intel UHD770核显运行大语言模型的可能性。通过使用Intel发布的ipex-llm项目工具包,成功在核显上运行了Qwen3.5系列模型。测试发现0.8B小模型运行流畅(3-5秒响应),但智能程度有限;而9B大模型虽然效果更好,但响应时间长达2分钟,且GPU/CPU占用率不高。实验证明Intel核显确实可以运行LLM,但实际效果和性能表现仍有提升空间,特别是对大模型的支持尚不理想。

添柴程序猿的专栏 238

TensorFlow早停机制终极指南:5个简单步骤防止模型过训练[特殊字符]

TensorFlow早停机制是深度学习训练中防止过拟合的关键技术,能够智能监控验证损失并在模型性能不再提升时自动停止训练。TensorFlow-Course项目提供了完整的早停机制实现示例,帮助开发者避免过度训练导致的模型性能下降问题。本文将详细介绍TensorFlow早停机制的工作原理、实现方法和最佳实践,让你快速掌握这一重要的模型优化技巧。 ## 📊 什么是TensorFlow早停机制?

gitblog_00030的博客 472

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: 告别KMS!Office2016永久激活新方案:命令行一键搞定(含密钥大全)
下一篇: 为什么你的Transformer模型总OOM?Linformer线性复杂度改造避坑指南
http9protocoller
博客等级 码龄1天 0粉丝 1782原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值