728x90
경사 하강법 코드를 보면 requires_grad=True, backward() 등이 나옵니다. 이는 파이토치에서 제공하고 있는 자동 미분(Autograd) 기능을 수행하고 있는 것입니다. 파이토치의 학습 과정을 보다 더 잘 이해하기 위해서 자동 미분에 대해서 이해해봅시다.
1. 자동 미분(Autograd) 실습하기
자동 미분에 대해서 실습을 통해 이해해봅시다. 임의로
라는 식을 세워보고, w에 대해 미분해보겠습니다.
import torch
값이 2인 임의의 스칼라 텐서 w를 선언합니다. 이때 required_grad를 True로 설정합니다. 이는 이 텐서에 대한 기울기를 저장하겠다는 의미입니다. 뒤에서 보겠지만, 이렇게 하면 w.grad에 w에 대한 미분값이 저장됩니다.
w = torch.tensor(2.0, requires_grad=True)
이제 수식을 정의합니다.
y = w**2
z = 2*y + 5
이제 해당 수식을 w에 대해서 미분해야합니다. .backward()를 호출하면 해당 수식의 w에 대한 기울기를 계산합니다.
z.backward()
이제 w.grad를 출력하면 w가 속한 수식을 w로 미분한 값이 저장된 것을 확인할 수 있습니다.
print('수식을 w로 미분한 값 : {}'.format(w.grad))
수식을 w로 미분한 값 : 8.0
** 최종 미분된 것이 4w이므로 초기 w값을 2로 잡았기 때문에 대입해서 4*2=8 이 된 것이다.
728x90
'AI > ML' 카테고리의 다른 글
[ML] 미니 배치와 데이터 로드(Mini Batch and Data Load) (0) | 2024.03.28 |
---|---|
[ML] nn.Module로 구현하는 선형 회귀 (0) | 2024.03.26 |
[pytorch] 파이토치 입문 (0) | 2024.03.23 |
[ML] 다중 선형 회귀(Multivariable Linear regression) (1) | 2024.03.23 |
[ML] 선형회귀(Linear Regression) (0) | 2024.03.21 |