PyTorch BatchNorm2d — 2D 컨볼루션용 배치 정규화

PyTorch BatchNorm2d — 2D 컨볼루션용 배치 정규화

torch.nn.BatchNorm2d(num_features) 는 4D 입력 (N, C, H, W) 에 적용되는 배치 정규화 레이어예요. 각 채널별로 미니배치의 평균·분산으로 정규화하고, 학습 가능한 weight(γ)·bias(β) 로 다시 스케일/시프트해요.

동작

  • 훈련 중에는 미니배치 통계로 정규화하고, 누적된 이동 평균(running mean/var) 을 갱신해요.
  • 평가 시에는 그 이동 통계를 사용해 일관된 변환을 적용해요.
  • affine=True(기본)면 γ,β 를 학습하고, track_running_stats=True면 이동 통계를 관리해요.
import torch, torch.nn as nn
bn = nn.BatchNorm2d(num_features=64)     # 채널 64
x = torch.randn(8, 64, 16, 16)
y = bn(x)                                  # (8,64,16,16)

사용 팁

  • 컨볼루션(A의 (N,C,H,W) 입력)에서는 BatchNorm2d, 1D·3D에는 각각 BatchNorm1d/BatchNorm3d 를 써요.
  • 미니배치가 너무 작으면 통계가 불안정할 수 있어요(그럴 땐 인스턴스/레이어 정규화 검토).
  • .eval() 전환 시 이동 통계로 동작하므로 훈련/평가 모드 구분이 중요해요.

더 알아보기