이미 OOP를 통한 완벽한 모듈화로 Template를 미리 형성해 놓은 것이 GitHub에 많이 공유되고 있다.
이런 Template에서는 config 파일(형식 : json 등)을 내가 원하는 값으로 변경시키고, train.py 파일에 내가 원하는 모델을 입력함으로써 다른 부분은 건드리지 않고 내가 원하는 학습을 수행시킬 수 있다.
(이런 코드를 통해 실행 환경을 저장하고, 깃허브 충돌을 막을 수 있다)
나중에 내가 Code를 짜다 보면 Template과 유사하게 짜지는 것을 알 수 있다.
따라서, 이미 전문가들에 의해 만들어진 완벽한 코드 Template의 구조를 잘 살펴보고, 훗날 활용하도록 해보자
Python 코드를 수행시켜주는 주체이다.
parse_config.py의 from_args 메서드에서 객체를 반환받아 main 메서드를 수행하는 방식으로 학습이 진행된다.
from_args : Argument로 불러온 파일을 해석(config.json)
__getitem__ : index 값을 넣어주면 index에 존재하는 값을 불러오는 메서드
init_obj(A,B) : A 폴더 속에 존재하는 B.py 파일에서 모듈을 불러오기 위한 메서드
import data_loader.data_loaders as module_data
init_obj('data_loader', 'module_data')
"data_loader":{
"type" : "want_to_call_module",
"args":{
~~~~~~
}
}
self.optimizer.zero_grad() # Gradient 초기화
output = self.model(data) # y의 예측값 생성
loss = self.criterion(output, target)
# y의 예측값인 output과 실제 target 사이 loss값 측정
loss.backward() # Backward Propagation 수행
self.optimizer.step() # Gradient Update
# 위 과정 전체가 Batch 1개가 1 Epoch 수행되는 과정임
학습한 모델에 대한 정확도 측정 코드로써, Inference를 수행해주는 파일이다.