앞에서 저장했던 모델(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