인프런 커뮤니티 질문&답변
옵티마이저랑 with
작성
·
181
1
중첩 for문 안에서
optimizer.zero_grad 의미를 잘 모르겠는데 어떤건가요 ??
그리고 왜 옵티마이저를 초기화하는지 이유가 궁금해요
with torch.no_grad(): 이 부분의 기능도 모르겠어요
그리고 with함수에 대해서 구글검색해봐도 잘 모르겠는데 어떤기능을하나요 ??
좋은 강의 감사드립니다 :)
답변 1
0
딥러닝호형
지식공유자
안녕하세요!
1: 파이토치는 gradient 값을 누적하여 역전파를 진행합니다. 따라서 optimizer.zero_grad()을 설정하지 않으면 이 전 배치에 누적 된 값이 다음 계산에 들어오게 됩니다.
2,3: with torch.no_grad(): 는 모델의 파라메터의 requires_grad를 False로 만들어줍니다.
따라서 평가 시에는 최적화 계산(gradient)을 하지 않기 때문에 autograd 기능을 비활성(False)하여 메모리 사용량을 줄여주게 됩니다.
즉, 평가 시에 사용하시면 됩니다 :)




