https://pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html
autograd 패키지는 모든 텐서 연산에 대해 자동으로 미분값을 구해주며
코드에 따라 back propagation이 정의되어 매번 달라질 수 있음
torch.Tensor 클래스에 .requires_grad 를 True로 하면 모든 연산을 추적하며
연산 종료 후 .backward()를 호출하면 자동으로 게산된 gradient들을 반환함
argument는 shape
모든 graient는 .grad 에 축적됨
텐서를 추적하지 않게하려면 .detach()하면 됨
with torch.no_grad(): 는 해당블록을 트래킹하지않음
function 클래스는 매우매우 중요함
Tensor와 Function 은 서로 밀접하며 연산의 모든 것을 기록함
각각의 변수는 .grad_fn 속성이 있으며 이는 Tensor를 생성한 Function을 말함(참조함)
유저로부터 생성된 Tensor는 제외함 - 즉, 함수를 이용해 Tensor가 생성되면 그 Tensor는 .grad_fn속성이 있음
requires_grad는 바꿀수있음
a.requires_grad_(bool)
ex)
x 는 2*2 행렬 원소는 전부 1 (xi = 1) (i는 1,2,3,4)
y 는 2*2 행렬 원소는 전부 2 (yi = xi + 2)
zi = yi^2 * 3 = (xi + 2) ^2 * 3
o = out 텐서 = zi 의 평균 = 1/4 * zi = 3/4 * (xi + 2) ^2
따라서 o를 xi로 미분하면 3/2 * (xi + 2)
위 캡쳐 예에서 xi는 1이므로 4.5가 나옴
'딥러닝 > 파이토치' 카테고리의 다른 글
파이토치 튜토리얼: Optional: Data Parallelism (2) | 2018.05.11 |
---|---|
파이토치 튜토리얼: Training a classifier (0) | 2018.05.09 |
파이토치 튜토리얼: Neural Networks (1) | 2018.05.04 |
기본 텐서 연산 공부 (0) | 2018.05.04 |
파이토치 시작 (0) | 2018.05.04 |