背景
BatchSize=1の時、BatchNormとInstanceNormは等価なので、結果が同じになるのか気になって調べてみた。

調査
Pytorchでの
BatchNormのではaffine=TrueでΓとβの値がparameterとして学習されるのに対し
InstanceNormではaffine=FalseでΓ=1とβ=0と固定している。


結果

BatchNormよりInstanceNormの方が精度が高い
BatchNormのDefault Valueを同じに設定したらほとんど同じ結果が得られた。
結論
・BatchNormのaffine=FalseにするとInstanceNormと同じ結果が得られる
・Batch_size=1でBatchNormを使うとΓとβがノイズを持ったデータに対して学習されてしまうと考えられるので、AffineをFalseにするかInstanceNormを使うと良いかもしれない。
参考文献
BatchNorm2d
https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html
InstanceNorm2d
https://pytorch.org/docs/stable/generated/torch.nn.InstanceNorm2d.html