当前位置: 首页 > news >正文

正则化都是放在模型的哪个位置呢?

✅ 什么是“正则化”?

在神经网络中,正则化(Regularization)= 抑制过拟合的技巧
目的是让模型在训练集和测试集上都表现得好(泛化能力强)。


🧠 常见的正则化手段包括:

方法类型通常放在哪里?作用
L1 / L2 正则项权重正则优化器参数中控制权重大小,避免过拟合
Dropout激活正则通常放在全连接层或 ReLU 后随机屏蔽神经元,增加鲁棒性
BatchNorm激活正则 + 稳定训练Conv/Linear 后、ReLU 前归一化激活分布,加快训练
Data Augmentation输入层面数据加载阶段扩展数据多样性
Early Stopping训练控制训练过程监控防止模型训练太过拟合
Weight Decay权重正则Optimizer 中设置相当于 L2 正则


✅ 那“放在哪里”呢?逐个来看:


🔸 1. L1 / L2 正则(Weight Decay)

  • 放在:优化器设置中

  • 代码示例:

optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, weight_decay=1e-4)

  • 作用在模型所有可训练权重上

  • 不影响网络结构,只影响训练时的权重更新


🔸 2. Dropout

  • 通常放在:Linear 或 ReLU 后面

  • 不能放在卷积层后直接用(容易丢信息)

nn.Linear(128, 64), nn.ReLU(), nn.Dropout(p=0.5),

  • 注意:训练时才启用 Dropout,验证/测试时自动关闭


🔸 3. BatchNorm

  • 放在 Conv/Linear 输出后,ReLU

  • 在训练和测试阶段行为不同(训练时统计均值方差)


🔸 4. Data Augmentation

  • 放在数据加载前,例如:

transform = transforms.Compose([ transforms.RandomHorizontalFlip(), transforms.RandomCrop(32, padding=4), transforms.ToTensor(), ])

  • 与模型结构无关,但非常有效


🔸 5. Early Stopping

  • 放在训练 loop 外部控制,基于验证集监控性能


✅ 一个典型的结构示例

nn.Conv2d(3, 16, 3, padding=1), nn.BatchNorm2d(16), nn.ReLU(), nn.MaxPool2d(2), nn.Conv2d(16, 32, 3, padding=1), nn.BatchNorm2d(32), nn.ReLU(), nn.MaxPool2d(2), nn.Flatten(), nn.Linear(512, 128), nn.BatchNorm1d(128), nn.ReLU(), nn.Dropout(p=0.5), nn.Linear(128, 10) # 输出层,不加正则


✅ 总结一句话:

正则化是“无处不在”的,但每种方法都在“它该在的地方”。

正则化类型该放哪里
DropoutLinear/ReLU 后
BatchNormConv/Linear 后,ReLU 前
L2Optimizer 里
Augmentation数据预处理阶段
EarlyStopping训练 loop 外
http://www.dtcms.com/a/308058.html

相关文章:

  • 系统讲解图片格式转换:为什么要转换、怎么转换
  • 数据治理:数字化时代的 “治” 与 “理” 之道 —— 破解企业数据资产困局
  • 【2025/07/31】GitHub 今日热门项目
  • 代码随想录day51图论2
  • Spring MVC体系结构和处理请求控制器
  • 图论:SPFA算法
  • 嵌入式操作系统快速入门(1):快速入门操作系统常见基础概念
  • CMake项目中如何按目录结构分离显示Header和Source文件
  • LPC2132GPIO
  • Ubuntu 内网多台服务器时间同步方案(适用于临时能上外网的环境)
  • 电商作图:解锁“素材裂变”和“产品测款”新姿势
  • Zombie Process
  • Apache Camel 简介
  • STM32 USB 设备中间件 tinyusb
  • 开疆智能Profient转Modbus网关连接MAG8000电池流量计配置案例
  • 快速入门开源项目若依
  • FISCO BCOS Gin调用WeBASE-Front接口发请求
  • 【Kiro Code】Chat 聊天功能
  • React的介绍和特点
  • Linux的访问权限(保姆级别)
  • 深入浅出HTML5 CSS类扩展:getElementsByClassName和classList属性
  • Vercel 全面介绍与网站部署指南
  • CSS和XPATH选择器对比
  • AI与AGI:从狭义智能到通用智能
  • Opus音频编码器全解析:从技术原理到实战应用
  • C++_HELLO算法_哈希表的简单实现
  • Docker 实战 -- cloudbeaver
  • C语言---结构体(格式、用法、嵌套、初始化)、共用体、枚举类型、typedef类型
  • 【RAG Query Expansion论文解析】用 LLM 进行查询扩展 (Query Expansion)
  • 在MySQL中DECIMAL 类型的小数位数(Scale)如何影响分组查询?