[부스트캠프 AI tech 이미지분류] week06 (2022.02.22)

07 Training & Inference 1

Loss

  • 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]

Optimizer

  • 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')

08 Training & Inference 2

Gradient Accumulation

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가 중첩됨

PyTorch Lightning

: keras만큼 간단한 high-level 코드

좋은 웹페이지 즐겨찾기