PyTorch5 [PyTorch] model.zero_grad()와 optimizer.zero_grad()의 차이 PyTorch로 구현된 코드들에 빠지지 않고 들어가 있는 메서드인 zero_grad(), 공식문서에는 다음과 같이 설명하고 있다. 이 메서드는 해당 옵티마이저에서 최적화하는 파라미터들의 그라디언트를 모두 0으로 만들어주는 역할을 한다. 보통 다음과 같이 쓰인다.import torch.optim as optim optimizer = optim.Adam(model.parameters()) ... optimizer.zero_grad() loss.backward() optimizer.step() loss.backward() 를 통해서 loss의 그라디언트를 역전파하는데. 이때 optimizer.zero_grad()를 하지 않으면 기존에 저장되어 있었던 값이 영향을 미치면서 역전파과정이 잘못되어진다. 그래서 반드.. 2023. 10. 15. [PyTorch] torch.no_grad()와 model.eval()의 차이 PyTorch를 사용하면서 모델의 Evaluation을 진행할 때 Memory leak가 발생하면서 두 함수의 차이점을 분명히 해야한다는 점을 깨달았다. 따라서 본 피드에서는 두 함수의 차이에 대해 공부한 내용을 써내려가보도록 하겠다. model.eval() with torch.no_grad(): for batch in data_loader: ... 우리는 흔히 모델의 Evaluation 단계를 진행할 때 위와 같은 코드로 흔히 시작한다. 이제 두 함수의 차이점을 본격적으로 알아보자. with torch.no_grad() 이와 같이 torch.no_grad()를 with statement에 포함시키게 되면 Pytorch는 autograd engine을 꺼버린다. 이 말은 더 이상 자동으로 gradient.. 2023. 9. 18. 이전 1 2 다음