<질문>
언제 사용해야합니까.eval()
? "내 모델을 평가"할 수 있어야한다는 것을 이해합니다. 교육을 위해 어떻게 다시 끄나요?
예제 교육code 사용.eval()
.
<답변1>
model.eval()
훈련 및 추론(평가) 시간 동안 다르게 동작하는 모델의 일부 특정 계층/부분에 대한 일종의 스위치입니다. 예를 들어, Dropouts Layers, BatchNorm Layers 등. 모델 평가 중에는 꺼야 하며,.eval()
당신을 위해 그것을 할 것입니다. 또한 평가/검증을 위한 일반적인 관행은 다음을 사용하는 것입니다.torch.no_grad()
와 쌍으로model.eval()
그라디언트 계산을 끄려면:
# evaluate model:
model.eval()
with torch.no_grad():
...
out_data = model(data)
...
그러나 다음으로 돌아가는 것을 잊지 마십시오.training
평가 단계 후 모드:
# training step
...
model.train()
...
<답변2>
다음을 실행하여 평가 모드를 끌 수 있습니다.model.train()
. 모델을 추론 엔진으로 실행할 때, 즉 테스트, 검증 및 예측할 때 사용해야 합니다(모델에differently behaving layers).
<답변3>
model.eval
의 방법이다torch.nn.Module
:
평가() 모듈을 평가 모드로 설정합니다. 이것은 특정 모듈에만 영향을 미칩니다. 영향을 받는 경우 훈련/평가 모드에서의 동작에 대한 자세한 내용은 특정 모듈의 설명서를 참조하십시오. 드롭아웃, BatchNorm 등 이것은 self.train(False)과 동일합니다.
반대 방법은model.train
Umang Gupta가 친절하게 설명했습니다.
<답변4>
위의 답변에 추가 사항:
나는 최근에 작업을 시작했습니다Pytorch-lightning, 훈련-검증-테스트 파이프라인에서 상용구의 많은 부분을 래핑합니다.
무엇보다도 그것은model.eval()
그리고model.train()
허용함으로써 거의 중복train_step
그리고validation_step
래핑하는 콜백eval
그리고train
그래서 당신은 결코 잊지 않습니다.
'개발 > Python' 카테고리의 다른 글
[파이썬] 여러 list를 하나의 list로 합치는 방법은? (0) | 2022.10.06 |
---|---|
[파이썬] site-packages 디렉토리는 무엇입니까? (0) | 2022.10.06 |
[파이썬] 아무것도 출력하지 않는 logging (0) | 2022.10.06 |
[파이썬] Django에서 MySQL 설정하는 법 (0) | 2022.10.06 |