Early Stopping

PyTorch에서는 별도의 함수로 지정되어 있는 것 같지 않지만, 기본 개념을 알고 있다면 어렵지 않게 직접 구현할 수 있다. R과 마찬가지로 Python에서는 for 반복문에서 중단하는 명령어는 break이다. 기본 제공되는 스크립트에서 best accuracy를 평가하는 부분에 현재 epoch 번호도 저장하도록 변수를 하나 더 지정한다. 그리고 epoch와 관련된 반복문 마지막 부분에 현재 epoch과 best accuracy 때에 epoch 차이를 확인하여 일정 범위를 넘어서면 break가 동작하도록 조건문을 설정한다.

def train_model(model, criterion, optimizer, epochs):
    ...
    for epoch in range(epochs):
        ...
        if phase == 'val' and epoch_acc > best_acc:
            ...
            best_epoch = epoch
        if (epoch - best_epoch >= 10):
            break