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가 나옴





+ Recent posts