model.eval()
Dropout, batchnorm과 같이 training phase에서만 동작해야하는 layer을 off해준다.
with torch.no_grad()
gradient를 tracking하지 않아서 모델 파라미터의 변화를 추적하지 않고 gradient 계산을 비활성화 하여 update나 back propagation을 수행하지 않는다.
이를 통해 gradient를 저장할 필요가 없어 메모리 사용량이 감소하고 연산 속도가 빨라진다고 한다.
실제로 이를 빼고 그냥 평가 모델을 돌리게 되면 메모리가 터졌던 경험을 하였다.
'딥러닝 꿀팁' 카테고리의 다른 글
딥러닝 iteration 돌다가 중간에 죽었음 뜰 때는 pin_memory를 먼저 보라 (0) | 2024.02.27 |
---|---|
Pytorch에서 쓸 때마다 헷갈리는 unfold, fold 정리 (2) | 2024.01.09 |
for문과 같은 loop문 없이 tensor을 특정 조건으로 훑고 선택 및 변경하기 (1) | 2023.07.10 |
[파이썬]리스트에서 특정 column 내용 추출하기 (0) | 2023.05.24 |
왜 torch.zeros를 쓰지 않고 torch.new_zeros를 사용할까 (0) | 2023.05.16 |