- Focal Loss
: Class Imbalance 문제가 있는 경우, 맞춘 확률이 높은 class는 조금의 loss를, 맞춘 확률이 낮은 class는 loss를 훨씬 높게 부여- Label Smoothing Loss
: Class targeet labeld를 Onehot으로 사용하기 보다는 조금 soft하게 표현해서 일반화 성능을 높이기 위함
ex. [0, 1, 0, 0, 0] --> [0.025, 0.9, 0.025, 0.025]
- StepLR: 특정 step마다 LR감소
:torch.optim.lr_scheduler.StepLR(optimizer, step_size=2, gamma=0.1)
- CosineAnealingLR: cosine함수형태처럼 LR을 급격히 변경
:torch.optim.lr_scheduler.CosineAnealingLR(optimizer, T_max=10, eta_min=0)
- ReduceLROnPlateau: 더이상 성능향상이 없을 때 LR감소
:torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, 'min')
NUM_ACCUM = 2 optimizer.zero_grad() for epoch in range(2): running_loss = 0.0 for i, data in enumerate(train_loader, 0): inpputs, labels = data outputs = net(inputs) loss = criterion(outputs, labels) / NUM_ACCUM loss.backward() if i % NUM_ACCUM == 0: optimizer.step() optimizer.zero_grad()
: 큰 batch가 필요할 때 사용
:loss.backward()
까지만 사용할 경우 loss가 중첩됨
: keras
만큼 간단한 high-level
코드