Autograd(자동미분)

꼼댕이·2022년 10월 1일
0

pytorch

목록 보기
2/7

Autograd(자동미분)

  • backward에서 사용

ex) Q=3a3b2Q=3a^3-b^2

a = torch.tensor([2,3], requires_grad=True)
b = torch.tensor([6,4], requires_grad=True)
Q = 3*a**3-b**2
external_grad = torch.tensor([1,1]) # 미분하는 값이 2개가 나와야 하기 때문에 (a에 관한 미분, b에 관한 미분) gradient 크기를 맞춰주기 위함
Q.backward(gradient=external_grad)
	a.grad=tensror([36, 81])
    b.grad=tensor([-12, -8])
    

Autograd & Optimizer

nn.parameter

  • Tensor 객체의 상속 객체
  • nn.Module 내에 attribute가 될 때는 requires_grad=True로 지정되어 학습 대상이 되는 Tensor
  • 우리가 지정할 필요는 없음 -> 대부분의 layer에는 weights 값들이 저장되어 있기 때문

Backward()

  • layer에 있는 parameter들을 수행
  • forward의 결과값(model의 예측값)과 실제값과의 차이(loss)에 대해 미분을 수행
  • 해당 값으로 parameter 업데이트

※기본 모델 단계

criterion = torch.nn.BCEWithLogitsLoss()

for epoch in epochs():
  optimizer.zero_grad()
  ouptut = model(input)
  loss = criterion(output, labels)
  loss. backward()
  optimizer.step()
profile
사람을 연구하는 공돌이

0개의 댓글