sol’s blog

모델 실험을 위한 코드 템플릿 생성

다양한 모델 실험 케이스를 효율적으로 분업/관리할 수 있도록, 공통 구조의 .ipynb 코드 템플릿을 제작

sol-commits
sol-commits May 17, 2025
목적, 마감, 결과, subtasks
  • 목적
    • 다양한 모델 실험 케이스를 효율적으로 분업/관리할 수 있도록, 공통 구조의 Pytorch 기반 .ipynb 코드 템플릿을 제작
    • 모든 실험은 템플릿을 복사한 후 핵심만 수정하는 방식으로 재현 가능해야 하며, 결과물 저장 경로/포맷이 고정되어 있어야 자동화 및 통합이 쉬움
  • 마감: 5월 17일
  • 실험 케이스 목록(1차)
    • 실험 유형
      설명
      Stacked LSTM
      기본 LSTM(3 layers)
      Bi-LSTM
      양방향 처리
      Bi-LSTM + Attention
      Attention Layer 추가
      No phone_detected
      해당 feature 제거
      mar/ear only
      핵심 feature subset 사용
      Full feature set
      모든 feature 사용
      Yawn oversampling
      하품 클래스 샘플 수 증강
      Noise injection
      입력 feature에 jittering
      Long window
      시퀀스 길이 24
      Short window
      시퀀스 길이 12
      CNN + LSTM
      앞단에 Conv1D 추가
      - 이미 작성한 코드가 있어서 코드 템플릿에 고려 안해도됨
      TimeDistributed Dense
      시점별 Dense 적용
  • 산출물
    • code_template.ipynb : 팀원이 복사해서 사용하는 실험 템플릿
    • 고정된 결과 경로 구조
  • subtasks
    • 디렉토리 자동 생성 및 고정 경로 관리

      • case_name을 입력하면 해당 경로 자동 생성

      실험 조건 지정 변수 구조화

      • dataclass를 사용한 구조화

      실험 로그 및 리포트 저장

 

config dataclass

Callout icon'

꼭 확인해야 하는 부분

  • case_name → 모델 최상위 디렉토리명이 되는 값
  • sequence_length
    • 이 값에 따라 csv 를 자동으로 가져오므로 확인 필요
 

early stopping, learning rate scheduler는 제외

  • 현재 실험의 목적은 모델 구조(ex. LSTM, BiLSTM, Attention 등) 간의 성능 차이를 공정하게 비교하는 것
  • early stopping, lr scheduler를 사용하면 공정성이 떨어짐
  • 구조 자체의 차이를 관찰하고 싶을 때는 학습률 변화를 고정한 상태로 실험하는 것이 더 객관적

→ 성능을 최대한 끌어내야 하는 단계에서 이 전략들을 다시 적용

 

model_type, data_type

모델 저장과 결과 저장하는 함수에 model_type, data_type 을 인자로 받아야하는 경우가 있음

이를 enum으로 코드를 짜서 실수하지 않도록 방지

Callout icon'

model_type

  • ModelType.BEST
  • ModelType.LAST

모델은 best_model, last_model 둘만 저장하기 때문에, 어떤 모델을 load 할지에 따라 model_type을 넘겨주면 됩니다.

Callout icon'

data_type

  • DataType.TRAIN
  • DataType.VAL
  • DataType.TEST

어떤 데이터셋으로 모델 성능을 평가할지에 따라 data_type을 넘겨주면 됩니다.

 

모델 성능 평가 및 오분류 시각화

클래스별 확신 높은 오분류를 시각화하기 위해 val_probs도 받습니다.
  • evaluate_model
    • 모델을 평가하고 평가 결과인 confusion_matrix, classification_report를 저장 경로에 저장, 시각화, (true_labels, pred_labels, 예측 확률) 반환
  • 클래스별 확신 높은 오분류 top-10 인덱스 추출
    • 이 인덱스 중 하나를 골라 다음 함수를 부름

최종 결과물

config.case_name 디렉토리 하위에 모델 결과들이 저장됨

classification_report, confusion_matrix 폴더를 분리하는 게 나을지…

best_train_classification_report.png
best_model 로 train 성능 평가한 classification_report
trainval_curve.png
loss, accuracy curve 그래프
training_results.csv
매 epoch 마다의 train, validation 의 loss, accuracy
weights
best_model.pth
last_model.pth
저장
 

추천 글

BlogPro logo
Made with BlogPro

태그