from torch.autograd import Variable
1) Variabel에 Tensor를 감싼다. 그리고 requires_grad=True를 통해 미분을 진행하겠다는 의사를 표시
import torch from torch.autograd import Variable x = Variable(torch.ones(2,2), requires_grad=True) # tensor형태로 반환
>> torch.ones(2,2) tensor([[1., 1.], [1., 1.]]) >> x tensor([[1., 1.], [1., 1.]], requires_grad=True)
2) Variable을 활용한 수식들을 적는다.
out = x**3 + 7*x +10
3) 수식의 결과를 backpropagation 진행
out.backward()
4) 초기 x의 grad에 대해 살펴보며 해당 변화량을 확인
print(x.grad)
출처 : https://aigong.tistory.com/179
파이토치 공식문서 Variable
Tensor.requiresgrad(requires_grad=True
파이토치 공식문서에 따르면 Variable은 최근 버전에서 deprecated상태이다.
Variabel은 원래 autograd를 사용하기 위해서 사용되던 타입이었으나, 현재는 Tensor타입과 병합됨. 즉, Tensor타입에서 디폴트로 autograd기능을 지원하도록 되어있다.
autograd_tensor = torch.randn((2,3,4), requires_grad=True)
결론
1. Variable은 과거 사용된 autograd방식으로 현재는 torch에서 모든 tensor에 autograd가 가능하도록 설정되어 있다. 비록 그 필요성은 사라졌지만 Variable은 여전히 사용 가능하다.
2. PyTorch 0.4 이상 버전에서는 더이상 Variable을 사용할 필요가 없다. Legacy 코드에 Variable이 있다면 그냥 Tensor라고 생각하고 읽으면 된다.