BN举例

 
import torch
from torch import nn
torch.manual_seed(73)

# BN在同维度的批次上处理,为简化设批次为1 
batch_size = 1
num_features=3
x=torch.randn(batch_size,num_features,7)
x
tensor([[[ 0.3408,  0.2297,  1.7066,  1.3925, -0.2963,  0.2836, -0.5602],
         [ 1.4158,  1.6667, -0.2644, -1.1022, -0.8187, -0.3501, -0.0052],
         [-1.6498,  0.9515,  0.7178, -2.0773,  1.6672,  0.5206,  1.6483]]])


bn = nn.BatchNorm1d(num_features=num_features)
bn(x)
tensor([[[-0.1322, -0.2768,  1.6453,  1.2366, -0.9614, -0.2067, -1.3048],
         [ 1.3561,  1.6104, -0.3464, -1.1952, -0.9080, -0.4332, -0.0837],
         [-1.3573,  0.4972,  0.3306, -1.6620,  1.0074,  0.1900,  0.9940]]],
       grad_fn=NativeBatchNormBackward0)

bn处理后的数据,尤其是绝对值大点的数据,其绝对值会变小一点
BN试图将原数据拉到一个正态分布上 
由于每个值-均值,所以,可能出正负的比例可能会有所变化

 
按批次处理,若有可能(即资源足够)批次的值要大一些,要能反应整体数据集的特征 

参考