[PyTorch] torch.autograd.Variable

qw4735·2022년 9월 4일
0

PyTorch

목록 보기
6/8

from torch.autograd import Variable

  • torch.autograd : 자동 미분 패키지
  • Variable : torch.autograd 안에 있는 클래스

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

PyTorch에서 Tensor와 Variable의 차이

파이토치 공식문서 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라고 생각하고 읽으면 된다.

출처: https://medium.com/@poperson1205/%EC%B4%88%EA%B0%84%EB%8B%A8-pytorch%EC%97%90%EC%84%9C-tensor%EC%99%80-variable%EC%9D%98-%EC%B0%A8%EC%9D%B4-a846dfb72119

    

0개의 댓글