딥러닝 논문 구현 방법 개요
일반적인 구현 패턴
1) train.py : 모델 class를 인스턴스로 선언하고 For-loop을 돌면서 gradient descent를 수행하면서 파라미터를 업데이트하는 로직
- 원하는 epoch만큼 파라미터를 업데이트 하는 실제 트레이닝 수행 - 추가적으로 파라미터 저장, 텐서보드 로그 저장등 추가 가능
2) evaluate.py/test.py : Training된 파라미터를 불러와서 evaluation이나 test/inference를 진행하는 로직
- 현재 파라미터에 기반한 학습에서 중간중간 파라미터의 성능을 평가 - 학습이 완전히 끝난경우 test/inference 진행 - 효율성을 위해 train.py 실행되는 도중 중간중간 evaluate.py/test.py 수행함으로 별도의 모듈로 작성함
3) model.py : Keras Subclassing 형태의 모델 구조 class 정의
- 딥러닝 모델 구조를 class 형태로 정의 - train.py 에서 실제로 클래스 인스턴스를 선언할때 사용
4) dataset.py : 데이터 전처리 및 batch 단위로 묶는 로직
5) utils.py : 딥러닝 메인 로직 외에 유틸리티성 기능들을 모아 놓은 로직
- ex) 이미지를 불러와 저장하거나, 학습 중간 결과를 GUI로 확인 하는 등의 기능 구현(딥러닝 메인 로직과는 별개)
6) loss.py : 모델의 Loss Function을 정의 - yolo 처럼 loss Function이 복잡한 경우 별개의 모듈로 구현 - model.py / train.py에서 import하여 사용