본문 바로가기
DeepLearning Framework & Coding/Pytorch

[pytorch 따라하기-2] Tensor 생성 및 Backward

by 노마드공학자 2021. 7. 25.

 

[pytorch 따라하기-1] 구글 Colab에 pytorch 세팅하기 https://limitsinx.tistory.com/136

 

※이 전글에서 정리한 코드/문법은 재설명하지 않으므로, 참고부탁드립니다

※해당 글은 PC에서 보기에 최적화 되어있습니다.


이번글에서는 pytorch를 활용하여 변수(tensor)를 생성하고 Gradient Descent(경사하강법)을 다루기 전초단계인

기울기값 알아내는 방법을 정리해보겠습니다.

 

해당 코드는 x값이 2,3 이고, y = x.^2 ,z = x^2 + 3 일때 각각의 기울기값을 나타내는 것입니다.

 

import torch

x = torch.tensor(data = [2.0,3.0], requires_grad = True)

y = x**2

z = 2*y + 3

 

target = torch.tensor([3.0,4.0])

loss = torch.sum(torch.abs(z-target))

loss_2 = torch.abs(z-target)

loss.backward()

 

print('loss : ',loss)

print('loss_2 : ', loss_2)

print(x.grad, y .grad, z.grad)

 

 

결과값

 

x=[2,3]을 수식에 대입하면

y=[4,9]

z=[11,21] 이 되는데요, loss = z-target이기에 print out을 하게되면

[8,17]이 나오며, loss.sum = 8+17=25가 됩니다.

loss.backward() 함수를 통해 기울기(gradient)값을 연산하도록 하면, 

(Z-target)에 대한 미분값 = Z' = 4x로 [8,12]를 print하게 됩니다.

여기서 중요한점이 loss.backward()부분입니다.

loss함수가 Z에 대한 함수였기에 [8,12]로 나타내지만, Y에 대한 함수였다면 y'=2x =[4,6]을 print하게 됩니다.


 

댓글