pdf文档 深度学习与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 页请下载阅读 -
文档评分
请文明评论,理性发言.