Hello Computer Vision

BatchNorm1d와 BatchNorm2d 의 쓰임 차이 본문

딥러닝/파이토치

BatchNorm1d와 BatchNorm2d 의 쓰임 차이

지웅쓰 2022. 11. 15. 10:03

지금까지 딥러닝 모델들을 공부하면서 CNN을 어떻게 쌓냐에 집중했지

BatchNorm 쓸 때는 습관적으로 쓰고는 했는데, 어떨 때는 BatchNorm1d를 쓰고 , BatchNorm2d를 쓰는 것을 발견했네요
(다른 사람의 코드를 쓰는 것도 생각을 많이 하고 써야겠다는 생각을 합니다..)

그래서 pytorch document 에서 찾아본 결과

BatchNorm1d : 2d or 3d input에 한하여 사용

BatchNorm2d : 4d input에 한하여 사용

 

이렇게 쓰인다고 합니다.

제가 공부하는 GAN모델에 한정하여 생각한다면

처음 노이즈(batchsize, 100)를 넣고 생성자부분에서 MLP를 진행할 때 정규화를 사용하고 싶다면 BatchNorm1d를 사용하고

판별자 네트워크를 짤 때는 이미지형태가 (c, b, w, h) 4d 형태이니 BatchNorm2d를 사용하면 될 거 같습니다.

 

그리고 제가 공부한 cGAN, vanila GAN에서는 (batch_size, latent_size) 를 input으로 넣었지만

DCGAN에서는 (batch_size, latent_size, 1, 1) 이렇게 넣었으므로 생성자 부분에서도 BatchNorm2를 사용했네요.

 

오늘을 계기로 작은 거 하나하나 왜 사용하였는지, 왜 다른지 잘 보면 좋을 거 같습니다.