유용 노트
model.eval() 과 with torch.no_grad() 차이
태호님
2022. 4. 5. 13:29
pytorch에서 inferance나 valid를 할 때
model.eval() 과 with torch.no_grad(): 를 사용하는데 왜 둘다 하는걸까??
같은 역할을 하지 않을까?? 라는 궁금증에 차이점을 알아보았습니다.
with torch.no_grad():
with torch.no_grad()
statement에 코드를 포함 시키면 pytorch는 autograd engine을 꺼버린다.
- 자동으로 gradient를 트래킹하지 않는다는 말
- backpropagation을 안하므로 autograd engine을 끔으로서 메모리 사용량과 연산속도를 높인다.
model.eval()
model.eval()
의 역할은 약간 다르다.
- 모델에서 train과 eval시에 다르게 동작하는 layer가 존재(ex. Dropout, BatchNorm...)
- 이런 layer의 동작을 바꾸는 목적으로 사용