深度学习进阶文档深度页
Dropout
训练时随机置零部分激活,减少神经元对固定组合的依赖。
学习目标
- 解释 p
- 区分训练与推理
- 放置 Dropout
为什么需要这个概念
容量较大的网络在小数据上容易共同适应训练细节。
- 常用神经网络正则化
- 要求正确 train/eval 模式
学习前需要掌握
过拟合内容待补充train/eval内容待补充
背景与问题
容量较大的网络在小数据上容易共同适应训练细节。
概念定义
Dropout 以概率 p 屏蔽输出并对保留值缩放,评估时关闭随机屏蔽。
直观理解
每次训练随机让部分成员缺席,迫使网络学会更分散的表示。
核心原理
Dropout 只在训练模式随机;p 太大会欠拟合。
它不替代数据划分、权重衰减或增加数据。
数学表达
核心公式
m 是随机 mask,p 是丢弃概率。
变量含义
p丢弃概率h原激活
计算步骤
- 1训练随机屏蔽
- 2保留值按 1/(1-p) 缩放
代码对应位置
示例 1Dropout · PyTorch 示例:验证Dropout的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
p | 丢弃概率 |
h | 原激活 |
完整数值示例
p=0.5
已知条件
- 4 个激活
- 期望保留 2 个
- 1
训练随机屏蔽
- 2
保留值按 1/(1-p) 缩放
期望输出尺度不变
处理前后对比
计算与实现步骤
- 1
选择位置
- 2
设置 p
- 3
train 启用
- 4
eval 关闭
- 5
比较验证曲线
代码实现
示例 1
Dropout · PyTorch 示例
Dropout · PyTorch 示例
PyTorch
example_01.py用途:验证Dropout的输入、计算和输出。
drop=nn.Dropout(p=0.5)
x=torch.ones(8)
drop.train();print(drop(x))
drop.eval();print(drop(x))代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证Dropout的输入、计算和输出。
Step 1 · 1–4 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
drop=nn.Dropout(p=0.5)
x=torch.ones(8)
drop.train();print(drop(x))
drop.eval();print(drop(x))预期输出或运行结果
训练输出含零且非零值缩放;评估输出全 1。
常见错误 · 3 条
- 验证忘记 eval
- p 越大越好
- 误当权重衰减
实际应用
- MLP
- CNN 分类头
- Transformer FFN
常见错误
验证忘记 eval
p 越大越好
误当权重衰减
文档来源
04_过拟合欠拟合与数据集划分原始文档
学习资料/deeplearning/04_过拟合欠拟合与数据集划分.md- §8.5 Dropout
- §10 正确验证
常见问题
推理时还随机吗?
不会,eval 模式关闭 Dropout。
Dropout 是否改变输出期望?
PyTorch 训练时缩放保留值以保持期望。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。