PyTorch Dropout — 뉴런을 확률로 끄는 레이어
PyTorch Dropout — 뉴런을 확률로 끄는 레이어
torch.nn.Dropout(p) 는 훈련 중 입력 텐서의 각 원소를 확률 p 로 0으로 바꾸고, 나머지는 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 사이에서 조절하는 게 일반적이에요.