Overfitting을 해결할 수 있는 방법 중 하나로,
일부 파라미터를 학습에 반영하지 않음으로써 모델을 일반화하는 방법
Train시에는 Dropout을 적용해야 하지만 Validation, Test 시에는 적용하면 안됨
torch.nn.Dropout(p=0.5, inplace=False)
p
: drop_prob, 노드를 얼만큼 활용 안 할지 (요소가 0이 될 확률, Default: 0.5)
inplace
: true로 설정하면 제자리에서 작업 수행 (Default: False)
model.train()
과 model.eval()
을 꼭 선언해야 모델의 정확도를 높일 수 있다!
# Example
model.train() # 학습에서는 드롭아웃을 사용 (dropout=True)
for epoch in range(1, 10):
# Example
with torch.no_grad():
model.eval() # 검증에서는 드롭아웃 사용x (dropout=False)