[Pytorch] Grad 관련

requires_grad

Tensor 생성 parameter에는 requires_grad가 존재한다.
default값은 False로 이 값을 True로 할경우 grad를 구하게 된다.
즉, 경사하강법에서 사용되는 weight의 경우는 grad를 구해야 하지만
입력값은 고정된 값이므로 grad를 구할 필요가 없다.

w = torch.randn(3, requires_grad = True)

이 grad 계산을 취소 또는 생략하는 방법은 아래와 같다.

# Option 1
w.requires_grad_(False)
# Option 2
w.detach()
# Option 3
with torch.no_grad():
    blabla # 이 조건문 안에서의 연산은 grad 연산이 되지 않는다.

grad 초기화

RNN 사용 때문에 grad는 계속 축적되게 되어있다.
따라서 매 Update 마다 grad를 초기화 해줘야 한다.

# Option 1, 파라미터 자체의 grad 초기화
w.grad.zero_()
# Option 2, Optimizer 사용시 내부 grad 초기화
optimizer.zero_grad()




© 2020.12. by SungJae Yu

Powered by S.J Yu