深度学习与PyTorch入门实战 - 40. Batch Norm
1.29 MB
16 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
中文(简体) | .pdf | 3 |
摘要 | ||
文档详细介绍了Batch Normalization(批归一化,BN)的概念和在PyTorch中的实现。通过具体代码示例展示了如何使用nn.BatchNorm2d和nn.BatchNorm1d进行批归一化处理,并通过运行实例说明了其对小批量数据的标准化操作。文档还提到了BN的关键参数和状态,包括running_mean、running_var、momentum、eps等,展示了BN在训练和评估过程中的应用。BN的作用包括加速训练、提高模型泛化能力以及减少对初始化的敏感性。 | ||
AI总结 | ||
### 总结:深度学习与PyTorch入门实战 - Batch Normalization
#### 1. 概述
**Batch Normalization (Batch Norm)** 是一种在深度学习中加速训练和提高模型稳定性的技术。其核心思想是对每个小批量(mini-batch)的激活值进行归一化处理,从而解决内部协变量偏移问题。
.Batch Norm的主要作用包括:
- 加速训练过程
- 提高模型泛化能力
- 减少对初始化的敏感性
#### 2. PyTorch中的Batch Normalization实现
在PyTorch中,Batch Norm通过 `nn.BatchNorm1d` 或 `nn.BatchNorm2d` 实现,分别对应一维和二维数据(如时间序列和图像数据)。
- **示例代码**:
```python
layer = nn.BatchNorm2d(16)
x = torch.randn(100, 16) + 0.5
out = layer(x)
```
- **关键参数**:
- `num_features`:输入数据的特征维度。
- `affine`:是否学习缩放和偏置参数(默认为True)。
- `eps`:分母中添加的小常数,防止除以零(默认为1e-5)。
- `momentum`:运行时平均值和方差的更新动量(默认为0.1)。
- `track_running_stats`:是否跟踪.running_mean和.running_var(默认为True)。
- **运行状态**:
在训练模式下,Batch Norm会计算当前小批量的均值和方差,并更新运行时平均值和方差。在测试模式下,直接使用之前计算的运行时平均值和方差。
```python
# 初始化状态
layer.running_mean, layer.running_var = tensor([0., 0., ...]), tensor([1., 1., ...])
# 训练后状态
layer.running_mean, layer.running_var = tensor([0.0625, 0.0752, ...]), tensor([0.9902, 1.0067, ...])
```
#### 3. Batch Normalization的工作原理
Batch Normalization的操作可以分为以下三个步骤:
1. **归一化**:对小批量数据进行归一化处理,使其均值为0,方差为1。
2. **缩放**:通过学习得到的缩放参数(`weight`)和偏置参数(`bias`)对归一化后的数据进行调整。
3. **偏移**:通过偏置参数对归一化后的数据进行平移。
**具体公式**:
$$
\mu_{\text{batch}} = \frac{1}{m} \sum_{i=1}^m x_i
$$
$$
\sigma_{\text{batch}}^2 = \frac{1}{m} \sum_{i=1}^m (x_i - \mu_{\text{batch}})^2
$$
$$
\hat{x}_i = \frac{x_i - \mu_{\text{batch}}}{\sqrt{\sigma_{\text{batch}}^2 + \epsilon}}
$$
$$
y_i = \gamma \hat{x}_i + \beta
$$
#### 4. Batch Normalization的优点
- **加速训练**:通过减少内部协变量偏移,加速模型的收敛速度。
- **提高泛化能力**:一定程度上起到正则化效果。
- **减少对初始化的依赖**:模型对权重初始化的敏感性降低。
#### 5. 与其他归一化方法的对比
Batch Normalization与Instance Normalization和Group Normalization的主要区别在于处理数据的维度和场景:
- **Batch Normalization**:在一个小批量内进行归一化,适用于大多数深度学习任务。
- **Instance Normalization**:在每个样本的每个通道内进行归一化,常用于图像生成任务。
- **Group Normalization**:将通道分组进行归一化,适用于小批量数据量不足的情况。
通过以上总结,可以清晰了解Batch Normalization的核心概念、实现细节和实际应用场景。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
9 页请下载阅读 -
文档评分