pytorch方法测试——归一化(BatchNorm2d)

这篇博客主要通过测试代码展示了在PyTorch中如何使用BatchNorm2d进行数据归一化。内容提到了归一化的计算公式,并特别指出torch计算方差时不使用Bessel's correction,提醒读者在自定义方差计算时需要注意。

测试代码:

import torch

import torch.nn as nn

m = nn.BatchNorm2d(2,affine=True) #权重w和偏重将被使用
input = torch.randn(1,2,3,4)
output = m(input)

print("输入图片:")
print(input)
print("
### 使用 BatchNorm2D方法 `BatchNorm2D` 是一种用于卷积神经网络中的批量归一化技术,其主要目的是加速训练过程并提高模型的稳定性。以下是关于 `BatchNorm2D` 的具体用法以及一些重要参数的解释。 #### 参数详解 在 PyTorch 中,`nn.BatchNorm2d(num_features)` 接受多个参数以控制行为[^4]: - **num_features**: 这是指输入张量的通道数(即特征图的数量)。例如,如果输入是一个形状为 `(batch_size, channels, height, width)` 的张量,则应将此值设为 `channels`。 - **eps (epsilon)**: 默认值为 `1e-5`,这是一个很小的数值,用来防止除零错误。 - **momentum**: 控制运行均值和方差更新的速度,默认值为 `0.1`。它决定了新样本统计信息对整体统计的影响程度。 - **affine**: 如果设置为 `True`,则该层会引入两个额外的学习参数——缩放因子 γ 和偏移 β;否则这些参数被固定为 1 和 0。 - **track_running_stats**: 当启用时 (`True`),模块会在推理阶段记录全局统计数据以便于标准化处理。 下面是一段展示如何定义和应用 `BatchNorm2D` 层的例子: ```python import torch import torch.nn as nn # 定义一个简单的 CNN 模型包含 Convolutional Layer 和 Batch Normalization class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3) self.bn = nn.BatchNorm2d(64) # 创建 BatchNorm2d 对象 def forward(self, x): x = self.conv(x) x = self.bn(x) # 应用 BN 到 conv 输出上 return x model = SimpleCNN() input_tensor = torch.randn((8, 3, 224, 224)) # 假设有 batch size 为 8 的随机数据 output = model(input_tensor) print(output.shape) # 打印输出尺寸验证流程正确性 ``` 上述代码片段说明了如何在一个小型卷积神经网络架构中集成 `BatchNorm2D` 层[^1]。注意这里我们先执行卷积运算再施加批规范化操作。 另外需要注意的是,在实际项目开发期间可能会遇到某些特殊情况比如调试 YOLO 等复杂框架的时候可能观察到 NaN 结果的现象[^3]。这通常是因为学习率过高或者初始化不当引起的不稳定现象造成的。因此建议适当调整超参配置如降低初始 LR 或者重新设计权重分布策略来规避此类风险。 最后提醒一点就是当切换至测试模式下记得调用 `.eval()` 方法冻结所有的 BN 统计量从而保证预测一致性[^2]: ```python model.eval() # 测试前转换成 eval mode test_output = model(torch.randn((1, 3, 224, 224))) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值