Related to: Machine Learning
개요
역전파(Backpropagation)를 위한 자동 미분 기능인 Autograd를 설명합니다. PyTorch는 Autograd 기능이 엔진에 내장되어 있습니다.
핵심 개념
자동 미분(Autograd)
- 역전파를 위한 자동 미분 기능
- Pytorch는 Autograd 기능이 엔진에 내장되어 있습니다.
loss.backward()호출 시 연산 그래프를 역방향으로 탐색하며 각 파라미터의 gradient를 자동 계산
예시 / 코드
import torch
from torchvision.models import resnet18, ResNet18_Weights
model = resnet18(weights=ResNet18_Weights.DEFAULT)
optim = torch.optim.SGD(model.parameters(), lr=1e-2, momentum=0.9)
data = torch.rand(1, 3, 64, 64)
labels = torch.rand(1, 1000)
# Forward Pass
prediction = model(data)
# Calc loss
loss = (prediction - labels).sum()
# Backward Pass
# Autograd를 사용하여 자동으로 미분 수행, 결과 값은 각 param의 .grad에 저장
loss.backward()
# Gradient descent
# model.parameters()로 얻은 각 param의 .grad를 사용하여 해당 param을 업데이트
optim.step()관련 개념
- PyTorch 딥러닝 학습의 기본 순서 - Autograd가 사용되는 전체 학습 흐름
- torch.tensor의 requires_grad param의 기능 - Autograd 활성화 조건
- torch.nn.Parameter은 무엇일까 - Autograd가 자동 적용되는 Parameter 클래스
- optimizer.zero_grad()은 무엇일까 - Autograd 결과를 초기화하는 함수
- torch.no_gard()의 역할 - Autograd를 일시 비활성화하는 컨텍스트
참조
https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html