2. autograd와 Variable

ingsol·2023년 1월 7일
0

PyTorch

목록 보기
2/8

1. Autograd: automoatic differentiation

  • Autograd를 사용하면 backprop을 위한 미분 값을 자동으로 계산해줌
  • 자동 계산을 위해서 사용하는 변수는 torch.autograd에 있는 Variable

2. Variable(autograd.Variable)의 모습

1) data

: Tensor형태의 데이터가 담김

2) grad

: Data가 거쳐온 layer에 대한 미분값이 축적됨

3) grad_fn

: 미분 값을 계산한 함수에 대한 정보(backward정보)

import torch
from torch.autograd import Variable
    
a = torch.ones(2,2)
a = Variable(a, requires_grad=True) #a값이 그래디언트 값이 필요하다, CNN/RNN은 weight값인 그래디언트 값이 자동으로 True로 됨
    
# a -> b -> c -> out
b = a+2
c = b**2
out = c.sum() #=36
    
------a.data---------
[[1,1],
[1,1]]
------a.grad---------
None
------a.grad_fn------
None
    
dout/da = a.grad # 현재는 None 값임, 이 값을 얻기 위해 ->
out.backward() # a.grad값이 채워짐, a.grad_fn은 여전히 None, Why? a값을 얻기 위해 수행된 function이 없으므로 ->
------a.data---------
[[1,1],
[1,1]]
------a.grad---------
[[6,6],
[6,6]]
------a.grad_fn------
None
    
# b.grad_fn은 <AddBackward0 object at ~>: b=a+2 add 연산에 대한 backward를 했다

0개의 댓글