딥러닝 - PyTorch: 자동 미분

dumbbelldore·2025년 1월 13일
0

zero-base 33기

목록 보기
73/97

1. Autograd의 개념

  • PyTorch의 자동 미분 엔진으로, 텐서의 연산 기록을 추적하며 연산 그래프(Computational Graph)를 생성함
  • Tensorflow의 Gradient Tape에 상응하는 개념으로, requires_grad=True로 설정된 텐서의backward() 함수를 이용해 기울기를 계산할 수 있음

2. Autograd 사용법

2-1. requires_grad 속성 지정

  • 텐서의 requires_grad 파라미터를 True로 설정하여 기울기 계산 기능 활성화
import torch

x = torch.tensor(2.0, requires_grad=True)
print(x) # tensor(2., requires_grad=True)

2-2. backward() 호출

  • 연산식을 지정한 다음 backward()를 호출하면, 텐서의 grad 속성에 기울기 값이 저장됨
# 역전파 전
print(x.grad) # None

# 연산식 지정
y = x ** 2 + 3 * x

# 역전파 실시
y.backward()

# 역전파 후
print(x.grad) # tensor(7.)

3. 참고사항

  • Tensorflow와 같은 스타일을 사용하고 싶다면, torch.autograd.grad() 함수를 사용하여 기울기를 계산할 수 있음
x = torch.tensor(2.0, requires_grad=True)
print(x) # tensor(2., requires_grad=True)

y = x ** 2 + 3 * x
res = torch.autograd.grad(y, x)
print(res) # (tensor(7.0))
  • 특정 상황에 따라 미분값 계산이 필요하지 않은 경우에는 detach() 함수를 이용
# 미분 기능 설정
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2
y.backward()
print(x.grad) # tensor(4.)

# 미분 기능 해제
x = torch.tensor(2.0, requires_grad=True)
x.detach_() # 언더바 포함 명시(detach_) 시 inplace 효과
y = x ** 2

try:    
    y.backward()
except RuntimeError:
    print("기울기 추적 불가") # 기울기 추적 불가

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글