批归一化:在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定。
or
其中,γ(默认为1)和β(默认是0)是可学习参数,维度是输入的size C。
输入:(N, C, H, W)
输出:(N, C, H, W)` (same shape as input)
参数:
--num_features: size C 来自 size (N, C, H,W),channel的数量
--eps(默认值:le-5):为数值稳定性添加到分母的值。
--monentun(默认值:0.1):动量参数,用于running_mean and running_var计算的值,可以设置为None,简单的平均值。
--affine(bool,默认值:"True"):当设置为“True”时,该模块具有可学习的仿射参数 γ和β。
--track_running_stats(bool,默认值:"True"):当设置为"True"时,该模块跟踪运行平均值和偏差,当设置为" False "时,该模块不跟踪此类统计,并将统计缓冲区:otr: 'running_meon'和:attr: 'running_vor'初始化为"None"当这些缓冲区为"None"时,该模块始终使用批量统计。
例子:
import torch
import torch.nn as nn
>>> # With Learnable Parameters
>>> m = nn.BatchNorm2d(100)
>>> # Without Learnable Parameters
>>> m = nn.BatchNorm2d(100, affine=False)
>>> input = torch.randn(20, 100, 35, 45)
>>> output = m(input)