LoginSignup
2
2

More than 3 years have passed since last update.

【Pytorch】BatchNorm VS InstanceNorm

Posted at

背景

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

調査

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

image.png

image.png

結果

image.png
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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2