반응형
Pytorch를 사용해서 학습을 할 때, 보통 다음과 같이 구성한다.
#.........
for epoch in range(0, epoch_num):
for data, label in data_loader:
model.train() ### train setting
output = model(data)
###
# 학습 과정...
###
model.eval() ### evaluation setting
with torch.no_grad():
###
# 평가 과정...
###
#.........
위 코드에서 model.train()은 train 할 때, model.eval()은 evaluation(평가, val_loss 계산) 할 때 앞서 실행한다고 알고 있다.
정확히 무슨 동작을 하는 것인가... Pytorch documentation에서는 다음과 같이 설명한다.
train(mode=True)
- 모듈을 훈련 모드로 설정.
eval()
- 모듈을 평가 모드로 설정.
- train(False)와 같다.
- 모델이 Dropout 및 BatchNorm2d와 같은 모듈에 의존하는 경우 model.train()와 model.eval()을 호출해야 한다.
즉, model이 Dropout이나 BatNorm2d를 사용하는 경우, 훈련 모드에서는 사용하지만 evaluation을 할 때에는 사용하지 않도록 설정해주는 함수인 셈.
반응형
'언어 | Framework > Pytorch' 카테고리의 다른 글
Multi GPU 학습 모델 불러오기 (0) | 2024.07.09 |
---|---|
[Pytorch] tensor to PIL Image (0) | 2021.08.19 |
[Pytorch] numpy, tensor, list 변환 (0) | 2021.03.24 |
[Pytorch] Multi GPU (0) | 2021.03.24 |