서론

일단 Optimizer까지만 만들고서 ‘끝’이라고 해도 문제는 없을꺼다.

하지만 조금 조잡해보이는 문제가 있다.

Model과 Layer들, 그리고 그 외 이것 저것 구조 변경 (생각해 둔 것이 있다)을 해보자.

구조 변경

조금 더 효율적이고 빠른 계산을 위해, 또 더 괜찮아 보이는 코드를 위해, PyTorch를 참고해서 구조를 변경해보기로 했다.

  • 계산 그래프 단순화: 그래프에 들어가야 하는 부분만을 그래프에 넣자
  • ‘학습 가능한 파라미터’: 학습해야 하는 것만 학습하게 바꿔두자.
  • Optimizer가 파라미터의 목록을 가지고 있게 하기

좀 더 빠른 학습과 좀 더 빠른 기울기 계산을 할 수 있을꺼다.

그리고 아무래도 backward 계산은 Optimizer의 step 바깥으로 빼야할 것 같다. 적당하게 처리할 좋은 방법이 생각나지 않는다.

PyTorch에서는 Optimizer에 model의 parameter들을 넣는데… 일단은 지금 구조를 유지하자.

모델을 근사하게 만드는 방법?

PyTorch의 모델 (Module)은 역시 근사하다.

Backward도 딱히 건드릴 필요가 없고, 어떤 Parameter들이 들어있는지를 알아서 캐치한다.

어떻게 하는걸까. 원본 PyTorch처럼 완벽하게 할 필요는 없겠지만…

어딘가에서 현재 클래스 내의 모든 어트리뷰트를 한번 읽어보는게 아닐까.

다음 시간

일단 위의 ‘구조 변경’ 부분은 오늘 다 처리했다. (제대로 돌아가는 것도 확인함)

모델의 실제 구현은 다음 시간에 이어서 해보자.