When will you grow up?

2. Pytorch - Autograd 본문

02. Study/Pytorch

2. Pytorch - Autograd

미카이 2020. 2. 24. 00:29

저번시간에는 Tensor에 대해 알아봤다 궁금하다면? 클릭

이번시간에는 딥러닝 라이브러리를 사용하는 이유이자, 딥러닝의 꽃? 이라고 불릴 수 있는(backpropagation?)을 자동으로 해주는 autograd에 대해 알아보자.

 

Autograd ?

 - Tensor의 모든 연산에 대해 자동 미분을 제공하는 패키지이다.

 - 실행-기반-정의 (define-by-run) 프레임워크로, 코드를 어떻게 작성하여 실행하느냐에 따라 역전파(backpropagation)가 정의된다는 것. 만약 backpropagation을 알고싶다면 클릭

 - 자동 미분 계산을 위해서 torch.autograd 패키지 안에 있는 Variable을 이용해야 동작이 가능해진다.

 

 

Variable ?

 - autograd.Variable 클래스가 있는데, 이는 Tensor를 wrap 있으며 ,Tensor 기반으로 정의된 거의 대부분의 연산을 지원

 - 계산이 완료된 후,  .backward() 함수를 호출하여 gradient를 자동으로 계산할 수 있다.

 - autograd.Variable이 넓은 범위로 안에 data, grad, grad_fun로 Variable이 구성되어있는데,

   data 는 Tensor형태의 데이터가 담기고, grad는 data가 거쳐온 layer에 대한 미분값이 축적되며, grad_fn는 미분 값을     계산한 함수에 대한 정보를 담고있다.

 

ex)

----------------------------------------------------------------------------------

import torch

from torch.autograd import Variable

 

a = torch.ones(2,2)

a = Variable(a, requires_grad=True) # a에 gradient값이 필요하다라는 의미

print(a) # torch.FloatTensor of size 2x2

b = a + 2

c = b**2

out = c.sum()

out.backward() # ∂out/∂a이다. 즉,out을 a로 미분해라 라는 의미.

print(a.data) # 1 1 

                 # 1 1

 

print(a.grad) # 6 6

                 # 6 6

 

print(a.grad_fn) # None a가 직접적으로 수행한 연산은 없기에..

print(c.grad_fn) # pow backward object

print(out.grad_fn) # sum backward object

-------------------------------------------------------------------------------------

 

ex2)

import torch

from torch.autograd import Variable

 

x = torch.ones(3)

x = Variable(x, requires_grad=True)

y=x**2

z=y+3

grad=torch.Tensor([0.1, 1, 10])

z.backward(grad) # backward안에 값을 넣게되면 크기를 맞춰준다

print(x.grad) # 그래서 0.600, 6.000, 60.000 이 나오게 된다.

 

 

 

 

reference

https://evan-moon.github.io/2018/07/19/deep-learning-backpropagation/

https://www.youtube.com/watch?v=E0R9Xf_GyUc

https://9bow.github.io/PyTorch-tutorials-kr-0.3.1/beginner/blitz/autograd_tutorial.html#sphx-glr-beginner-blitz-autograd-tutorial-py

 

'02. Study > Pytorch' 카테고리의 다른 글

1. Pytorch - Tensor  (0) 2020.02.24
Comments