모델을 구현하다 보면 블록이 반복되고, 블록의 반복이 연속되는 구조가 많다.
이렇게 레이어를 구현하기 위한 기본 모듈은,
딥러닝을 구성하는 레이어의 base 클래스.
를 정의해야 한다.
일반적으로, nn module을 정의하는 방식은 다음 그림과 같다.
Weight 값들을 정의하는 클래스
Tensor 객체의 상속 객체이다.
⭐ nn.Module 내에 attribute가 될 때는 required_grad=True__로 자동 지정되어 학습 대상이 된다.
Tensor 클래스를 이용해서 weight를 지정하면 미분(학습)의 대상이 자동 지정되지 않아서,
print(layer.parameters()) 했을 때 출력이 안된다.
Layer에 있는 parameter를 미분(학습)시킨다.
Forward의 결과값(모델의 output=예측치=y^), 실제값(y)의 차이(loss=error)에 대해 미분.
우리가 알던 backward propagation의 과정이다
미분값을 이용해서 parameter를 업데이트한다.
AutoGrad로 알아서 해주지만, 직접 하고 싶다면 (굳이..!)
커스텀이 가능하다.
Linear Regression이 이미 정의되어 있는 클래스 (모듈??)
그냥 갖다 쓴다