[PyTorch] AutoGrad & Optimizer

·2021년 8월 18일
0
post-custom-banner

모델을 구현하다 보면 블록이 반복되고, 블록의 반복이 연속되는 구조가 많다.

이렇게 레이어를 구현하기 위한 기본 모듈은,

torch.nn.Module

딥러닝을 구성하는 레이어의 base 클래스.

  • Input
  • Output
  • Forward때에 일어나는 일
  • Backward때에 일어나는 일(AutoGrad)
  • Parameter(tensor형태) (weights를 생각하면 됨)

를 정의해야 한다.

일반적으로, nn module을 정의하는 방식은 다음 그림과 같다.

torch.nn.Parameter

Weight 값들을 정의하는 클래스

Tensor 객체의 상속 객체이다.

⭐ nn.Module 내에 attribute가 될 때는 required_grad=True__로 자동 지정되어 학습 대상이 된다.

Tensor 클래스를 이용해서 weight를 지정하면 미분(학습)의 대상이 자동 지정되지 않아서,
print(layer.parameters()) 했을 때 출력이 안된다.

  • Low level의 코드이다. 실전에서는 이렇게 짤 일은 없겠지만 한번 보자

  • input: in_features
  • output: out_features

Backward(AutoGrad)

Layer에 있는 parameter를 미분(학습)시킨다.

Forward의 결과값(모델의 output=예측치=y^), 실제값(y)의 차이(loss=error)에 대해 미분.
우리가 알던 backward propagation의 과정이다

미분값을 이용해서 parameter를 업데이트한다.

AutoGrad로 알아서 해주지만, 직접 하고 싶다면 (굳이..!)
커스텀이 가능하다.

torch.nn.Linear (참고)

Linear Regression이 이미 정의되어 있는 클래스 (모듈??)
그냥 갖다 쓴다

profile
튼튼
post-custom-banner

0개의 댓글