[부스트캠프 AI Tech] 공부 정리 (D+7)

Becky's Study Lab·2023년 11월 14일
0

Boostcamp

목록 보기
7/42

PyTorch에 대한 강의를 듣고 있는 주이다. 생각보다 강의는 짧은데 하나하나 직접 정리하다보니 시간이 좀 걸리는 거 같다. 그 과정에서 궁금한 점이 몇개 있어서 찾아보다가 적게 되었다.

7일차를 맞은 근황은 허리 통증이 생각보다 심하다는 점이다. 최근에 하던 일을 그만두고, 발레학원과 필라테스학원을 격일로 총 4일 이상을 일주일에 다녔었다. 건강을 위해 시작했지만 부캠을 하기 전에는 거의 운동에만 몰두를 했던거 같다. 이탈리아, 국내 여행들을 다녀와서 불은 몸을 다시 재구성?하고자 시작하기도 했지만 생각보다 지금 생활에서 빡센 느낌이다. 체력적으로 힘들고, 생각보다 부캠으로 인해서 오랜기간 앉아있어야 하다보니 허리통증이 좀 있는 상황이다. 뭘 하나 그만두어야 하나 생각이 들면서도 고르지 못하고 있다...

📖공부내용 간단 정리

AutoGrad (자동 미분) 정리

PyTorch에서 모든 신경망의 중심에는 자동미분(autograd) 이 가장 중요한 기능을 한다. backward(), grad() 같은 메소드에 익숙하지만 좀 더 자세히 파악해보고자 한다.
특히, Pytorch의 autograd는 실행-기반-정의(define-by-run) 프레임워크로, 코드가 어떻게 작동되는지에 따라 backprop가 정의되고, 모든 단일 반복이 다르다. (역전파는 학습 과정의 매 단계마다 달라진다.)

- requires_grad=True ?

requires_grad=True 는 autograd 에 모든 연산(operation)들을 추적해야 한다고 알려준다. 간단히 말하자면, Tensor.requires_grad 속성을 True로 설정하면, 이에 대한 모든 연산들을 추적하기 시작한다. 필요에 따라 모델을 freeze 시키고자 False로 설정해주는 경우도 있다.

import torch

a = torch.tensor([2., 3.], requires_grad=True)
b = torch.tensor([6., 4.], requires_grad=True)

물론, nn.Module 내에 attribute가 될 때는 required_grad=True로 지정되어 학습 대상이 되는 Tensor가 된다.

- backward() 속 gradient는 무엇인가?

Tensor.backward()의 역할은 자동으로 모든 기울기(gradient)를 계산하는 것이다. 그리고 이를 각 텐서의 .grad() 속성(attribute)에 누적되어 저장된다.

tensor 기록을 추적하는 것을 중지하려면 .detach()를 호출하여 계산 기록으로부터 분리할 수 있여 이후 연산들이 추적되는 것을 방지할 수 있다.

만약 Tensor가 scalar(예, 하나의 요소 데이터를 갖고있는)이면 backward()에 어떤 인자를 명시할 필요가 없다. 하지만 Tensor가 많은 요소를 갖고 있으면 tensor의 모양을 gradient 인자로 설정해야 한다.

  • jacobian matrix

🔖 Reference
[PyTorch] Freeze Network: no_grad, requires_grad 차이
자동미분 - AUTOGRAD : AUTOMATIC DIFFERENTIATION

profile
배우고 공부하고 기록하는 것을 멈추지 않는다.

0개의 댓글