PyTorch Dropout — 뉴런을 확률로 끄는 레이어

PyTorch Dropout — 뉴런을 확률로 끄는 레이어

torch.nn.Dropout(p) 는 훈련 중 입력 텐서의 각 원소를 확률 p0으로 바꾸고, 나머지는 1/(1-p) 로 스케일하는 정규화 레이어예요.

동작 방식

  • 훈련(training) 모드에서만 활성화되고, 평가(eval) 모드에서는 항등 함수처럼 동작해요.
  • 각 샘플마다 독립적으로 어떤 뉴런을 끌지 결정해, 일종의 부분 앙상블 효과를 내요.
  • p=0.5 는 완전연결 레이어에서 흔히 쓰고, 컨볼루션은 보통 더 작은 값을 써요.
import torch, torch.nn as nn
layer = nn.Dropout(p=0.5)
x = torch.randn(8, 64)
out = layer(x)          # 훈련 모드에서 50% 0으로
model.eval(); eval_out = layer(x)   # 평가에서는 그대로

사용 팁

  • 모델을 .eval() 로 바꿔야 드롭아웃이 꺼져서 일관된 추론이 돼요.
  • 입력이 2D 이상이면 각 채널·원소 단위로 Dropout2d/Dropout3d 등 변형이 따로 있어요.
  • 지나친 확률은 정보 손실이 크니 0.2~0.5 사이에서 조절하는 게 일반적이에요.

더 알아보기