理解PyTorch中的Dropout层 | AI生成和翻译

Home 2025.10

理解 drop = nn.Dropout(config.dropout)

在 PyTorch(一个流行的深度学习库)中,nn.Dropout 是一个内置模块,用于在模型训练期间应用丢弃正则化。该技术通过在前向传播过程中随机”丢弃”(即置零)张量中的一部分输入元素来帮助防止过拟合。它仅在训练期间激活;在评估/推理过程中,它不会丢弃任何元素,并会缩放剩余值以保持预期的输出幅度。

分解这行代码:

drop = nn.Dropout(config.dropout)

当你调用 drop(x) 时,Dropout 如何工作

不,drop(x)意味着”全部置零”。而是:

简单代码示例

这是一个最小的 PyTorch 代码片段来说明:

import torch
import torch.nn as nn

# 假设 config.dropout = 0.5 (50% 丢弃率)
config = type('Config', (), {'dropout': 0.5})()
drop = nn.Dropout(config.dropout)

# 示例输入张量
x = torch.tensor([1.0, 2.0, 3.0, 4.0])

# 训练期间
torch.manual_seed(42)  # 为了可重现性
print(drop(x))  # 可能输出: tensor([0., 0., 0., 8.])  # 随机丢弃 + 缩放

# 评估期间
drop.eval()
print(drop(x))  # 输出: tensor([1., 2., 3., 4.])  # 无变化

为什么使用 Dropout?

完整文档请查阅 PyTorch nn.Dropout 参考。如果这来自特定模型(例如 BERT),请告诉我以获取更多上下文!


Back

x-ai/grok-4-fast

Donate