본문 바로가기
Boostcamp AI Tech/[week 1-5] LEVEL 1

[Week 4 - Day 4] Pstage 이미지 분류 - Training & Infernece

by newnu 2021. 8. 27.
반응형

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)

 

반응형