Loss 함수 = Cost함수 = Error함수
Loss.backward()
Loss는 Module을 상속하는 같은 Family이고, 따라서 Criterion에 output을 넣게되면 input에서 output까지 연결된 어떠한 체인이 loss까지 연결되었고, backward함수를 통해 Gradient를 업데이트할 수 있다는 점이다.
loss는 output과 target의 사이에서 loss함수를 통해 나오는 값
어느 방향으로, 얼마나 움직이게 될지!
학습 시에 Learning Rate를 동적으로 바꾸는 방법
torch.optim.lr_scheduler.StepLR
step을 지나면서 점점 변화를 주는 방식
torch.optim.lr_scheduler.CosineAnnealingLR
torch.optim.lr_scheduler.ReduceLROnPlateau
객관적인, 성능의 평가가 필요하다.
-Classification
Accuracy, F1-score, precision, recall, ROC-AUC
Regression
MAE, MSE
Ranking
MRR, NDCG, MAP
score의 허와 실
- Accuracy
Class 별 밸런스가 적절히 분포되어 있을 때- F1-score
Class 별 밸런스가 좋지 않아서 각 클래스 별로 성능을 잘 낼 수 있는지 확인
학습과 추론의 과정을 이해해보자.
pretrained 모델, Loss, Optimizer, Metric
model.train()
순서.
1. epoch for 문
2. dataloader에서 배치 for 문
3. optim.zero_grad()
model.eval()
with torch.no_grad()
# 위 no_grad에는 아래 함수가 있다.
torch.set_grad_enabled(False)
특정 시점마다 checkpoint를 저장한다. 과정은 직접 pythonic하게 자유로운 방식으로 만들면 된다.
모델의 결과물인 Categorical Class를 submission.csv파일로 변환시켜서 최종 제출물을 만든다.
대부분의 training classfmf fit이라는 함수 하나로 정의할 수 있다.
그러나 하나하나 공부해보고 충분한 이해가 쌓인 다음 사용하는 것을 추천한다.