728x90
Training & Inference
모델 학습을 진행 -> 학습 프로세스에 필요한 요소 = Loss, Optimizer, Metric
Loss
loss.backward()를 실행하면 모델의 파라미터의 grad 값이 업데이트(requires_grad=False라면 업데이트가 안됨)
- Focal Loss
Class Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를, 맞춘 확률이 낮은 Class는 Loss를 훨씬 높게 부여
- Label Smoothing Loss
Class target label을 One-hot 표현으로 사용하기 보다는 조금 soft하게 표현해서 일반화 성능을 높이기 위함
Optimizer
- LR scheduler : 학습 시 learning rate를 동적으로 조절
- StepLR : 특정 Step마다 LR 감소
- CosineAnnealingLR : Cosine 함수 형태처럼 LR을 급격히 변경
- ReduceLROnPlateau : 더 이상 성능 향상이 없을 떄 LR 감소
Metric
- Accuracy : Class 별로 밸런스가 적절히 분포
- F1-Score : Class 별 밸런스가 좋지 않아서 각 클래스 별로 성능을 잘 낼 수 있는지 확인 필요
Training Process
- model.train() : training mode로 set
- optimizer.zero_grad : grad 값 초기화(하지않으면 누적됨)
- loss = criterion(outputs, labels) : loss 값 계산
- optimizer.step() : grad 값 업데이트
Inference Process
- model.eval() : evaluation mode로 set
- with torch.no_grad() : inference가 진행되는 동안 grad 값이 업데이트되지않게 함
- checkpoint.pt : 모델을 저장
728x90
'Boostcamp AI Tech' 카테고리의 다른 글
[주말 실험 일지_토] Image Classification (0) | 2021.08.30 |
---|---|
[Boostcamp Day-19] Image Classification - Ensemble (0) | 2021.08.27 |
[Boostcamp Day-17] Image Classification - Model (0) | 2021.08.25 |
[Boostcamp Day-16] Image Classification - Dataset (0) | 2021.08.25 |
[Boostcamp 4주차] 피어세션과 학습 회고 (0) | 2021.08.24 |