Language/Python
[Python/ Pytorch] torch.nn.BatchNorm2d()
밴나루
2022. 4. 21. 16:11
반응형
https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html를 기반으로 작성하였음.
CLASS
torch.nn.BatchNorm2d(
num_features, eps=1e-05, momentum=0.1, affine=True,
track_runing_stats=True, device=None, dtype=None
)
Batch Normalization
$$ y=\frac{x-E[x]}{\sqrt{Var[x]+\epsilon}} *\gamma +\beta $$
각 batch 별로 평균(mean)과 분산(variance)를 이용해 정규화하는 것을 의미함
파라미터
- num_features : input size $(N,C,H,W)$에서 $C$ ($N$은 batch-size, $C$는 channel 수, $H,W$는 height,width를 의미함)
- eps : Numerical stability를 위해 분모에 추가된 값으로서 default는 0.1임 (위의 식에서 $\epsilon$에 해당되며 분모가 0이 되어 NaN이 되는것을 방지하기 위함)
- momentum : running_mean과 running_var의 계산을 위해 사용되는 값으로서 default는 0.1임. (Trainining을 수행시에는 batch단위의 평균과 분산으로 batch-norm을 수행하고, Test를 수행시에는 축적된 running_mean/variance를 사용 - [1] 참조 - Bessel’s correlation 관련은 [3] 참조)
- affine : Boolean value이며, True로 설정시에, 이 모듈에 학습가능한 affine parameter가 있음. Default는 True임. (False로 설정시에 위의식에서 $\gamma$=1, $\beta$=0 임)
- track_running_stats : Boolean value이며, True로 설정시에 이 모듈은 running mean과 variance를 track하고 False로 설정시에는 이 모듈이 track하지 않고, running_mean과 running_var를 None으로 초기화하며, 이 값이 None인 경우에는 이 모듈은 항상 batch statistics를 사용함. Default는 True임. ([2] 참조)
Shape
- Input : $(N, C, H, W)$
- Output : $(N, C, H, W)$
Reference
[0] https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html
[1] https://eehoeskrap.tistory.com/430
[2] https://discuss.pytorch.org/t/pytorch-documentation-for-batchnorm/50804/10
[3] https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=af472&logNo=190291513
728x90