pytorch를 이용해서 모델을 학습한 뒤, 모델을 평가할 때 model.eval()과 with torch.no_grad()를 둘다 사용하라고 하는데, 두 명령어의 차이는 무엇일까?
model.eval()
- 해당 model의 모든 layer가 eval mode에 들어가게 함
- 학습할 때만 사용하는 개념인 Dropout layer이나 Batch Normalization Layer 등을 비활성화시킴
with torch.no_grad()
- with torch.no_grad()는 pytorch의 autograd engine을 비활성화시킴. 즉, 더이상 gradient를 트래킹하지 않음
- 필요한 메모리가 줄어들고 계산속도가 증가함
# pytorch model evaluate code
model.eval()
with torch.no_grad():
for batch in data_loader:
# code
더보기
참고문헌
stackoverflow.com/questions/55627780/evaluating-pytorch-models-with-torch-no-grad-vs-model-eval
androidkt.com/use-of-model-eval-and-with-torch-no_grad-in-pytorch-model-evaluate/
'Artificial Intelligence' 카테고리의 다른 글
Data/AI 직무 멘토링 수강생 After 공유 자료 (0) | 2024.11.21 |
---|---|
AWS GameDay 리뷰 - AWS Gen AI를 위해 알아야하는 것!? (0) | 2024.07.15 |
책 "BERT와 GPT로 배우는 자연어 처리" 후기 - 한국어 언어모델 입문서적으로 최고인 책 (0) | 2022.01.10 |
카이제곱 검정 (chi-squared test) (0) | 2021.11.07 |
척도의 종류와 의미 (0) | 2021.08.16 |