반응형

 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
woongs_93