Loss
loss.backward() : 오차 역전파
모델의 파라미터의 grad값 업데이트
- Focal Loss : Class Imbalance 문제 있는 경우 맞춘 확률이 높은 Class는 작은 loss, 확률이 낮은 Class는 높은 loss 부여
- Label Smoothing Loss : class target label 을 onehot 표현으로 사용하기 보다 여러 클래의 확률로 soft하게 표현하여 일반화 성능 높이기 위함
Optimizer
실제로 loss값 update
LR scheduler : learning rate 조절
- StepLR : 특정 step마다 LR 감소
schduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=2,gamma=0.1)
- CosineAnnealingLR : 코사인 함수 형태처럼 급격히 변경 ( 변화를 다양하게)
schduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=10,eta_min=0)
T_max : iteration 횟수
eta_min : 최소값
- ReduceLROnPlateau : 더이상 성능 향상이 없을 때 LR 감소
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,'min')
mode - min : 감소를 멈출 때/ max : 증가를 멈출 때
Metric
모델의 평가
Classification - Accuracy, F1 score, precision, recall, ROC&AUC
- Accuracy : 클래스별로 balance 적절히 분포
- F1-score : balance가 좋지 않아서 각 클래스 별로 성능을 잘 낼 수 있는 지 확인
Regression - MAE, MSE
Ranking - MRR,NDCG,MAP
Training Process
model.train()
optimizer.zero_grad()
- batch 돌아가면서 이전 batch 값 가지고 있지 않도록
creterion = torch.nn.CrossEntropyLoss()
loss = criterion(outputs,labels)
loss.backward()
optimizer.step()
for epoch in range(2):
for i,data in enumerate(trainloader,0):
inputs,labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss= criterion(outputs,labels)
loss.backward()
optimizer.step()
Inference Process
model.eval()
correct=0
total=0
with torch.no_grad():
for data in testloader:
images,labels = data
outputs = net(images)
-,predicted = torch.max(output.data,1)
total +=labels.size(0)
correct += (predicted ==labels).sum().item()
print('Accuracy : ',100*correct / total)
'Boostcamp AI Tech > [week 1-5] LEVEL 1' 카테고리의 다른 글
[Week 4 - Day 5] Pstage 이미지 분류 - Ensemble (0) | 2021.08.28 |
---|---|
[Week 4 - Day 3] Pstage 이미지 분류 - Model (0) | 2021.08.25 |
[Week 4 - Day 2] Pstage 이미지 분류 - Data Generation (0) | 2021.08.24 |
[Week 4 - Day 1] Pstage 이미지 분류 - EDA (0) | 2021.08.24 |
[Week 3 - Day 4 ] Pytorch (0) | 2021.08.20 |