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试图将原数据拉到一个正态分布上 由于每个值-均值,所以,可能出正负的比例可能会有所变化
按批次处理,若有可能(即资源足够)批次的值要大一些,要能反应整体数据集的特征