为了理解PyTorch中BatchNorm1d
的工作原理,我尝试将BatchNorm1d
操作在二维张量上的输出与手动归一化的输出进行匹配。手动输出的结果似乎被缩小了0.9747的倍数。以下是代码(注意affine被设置为false):
输出为:
0.9747
0.9747
0.9747
...
对BatchNorm2d
进行同样的操作没有问题。BatchNorm1d
是如何计算其输出的?
回答:
找到了原因。torch.var
在计算方差时使用了贝塞尔校正。传递属性unbiased=False
会得到相同的值。