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()전환 시 이동 통계로 동작하므로 훈련/평가 모드 구분이 중요해요.