더북(TheBook)

앞에서 저장했던 모델(VGG-model.pt)을 불러와서 테스트 테이터셋에 대한 성능을 측정합니다.

코드 6-59 테스트 데이터셋을 이용한 모델 성능 측정

model.load_state_dict(torch.load('../chap06/data/VGG-model.pt'))
test_loss, test_acc = evaluate(model, test_iterator, criterion, device)
print(f'Test Loss: {test_loss:.3f} | Test Acc: {test_acc*100:.2f}%')

다음은 테스트 데이터셋을 이용한 모델 성능 측정 결과입니다.

Test Loss: 0.693 | Test Acc: 50.00%

역시 결과가 좋지 않습니다. 계속 이야기했듯이 데이터셋을 늘리면 성능이 좋아질 것입니다. 단 이미지 데이터가 늘어난 만큼 훈련 시간이 상당히 길어질 수 있습니다.

테스트 데이터셋을 이용한 모델의 예측 결과를 알아보기 위한 함수를 정의합니다.

코드 6-60 테스트 데이터셋을 이용한 모델의 예측 확인 함수

def get_predictions(model, iterator):
    model.eval()
    images = []
    labels = []
    probs = []

    with torch.no_grad():
        for (x, y) in iterator:
            x = x.to(device)
            y_pred, _ = model(x)
            y_prob = F.softmax(y_pred, dim=-1)
            top_pred = y_prob.argmax(1, keepdim=True) ------ ①
            images.append(x.cpu())
            labels.append(y.cpu())
            probs.append(y_prob.cpu())

    images = torch.cat(images, dim=0) ------ ②
    labels = torch.cat(labels, dim=0)
    probs = torch.cat(probs, dim=0)
    return images, labels, probs
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.