더북(TheBook)

훈련 데이터셋과 더불어 테스트 데이터셋을 모델에 적용하여 정확도를 측정해 보겠습니다. 측정 결과는 데이터 프레임에 담아 둔 후 CSV 파일로 저장합니다. 테스트 용도의 데이터셋을 이용하므로 model.eval()을 사용합니다.

코드 6-18 모델 테스트를 위한 함수 정의

import pandas as pd

id_list = []
pred_list = []
_id = 0
with torch.no_grad(): ------ 역전파 중 텐서들에 대한 변화도를 계산할 필요가 없음을 나타내는 것으로, 훈련 데이터셋의 모델 학습과 가장 큰 차이점입니다.
    for test_path in tqdm(test_images_filepaths): ------ 테스트 데이터셋 이용
        img = Image.open(test_path)
        _id = test_path.split('/')[-1].split('.')[1]
        transform = ImageTransform(size, mean, std)
        img = transform(img, phase='val') ------ 테스트 데이터셋 전처리 적용
        img = img.unsqueeze(0) ------ ①
        img = img.to(device)

        model.eval()
        outputs = model(img)
        preds = F.softmax(outputs, dim=1)[:, 1].tolist() ------ ②
        id_list.append(_id)
        pred_list.append(preds[0])

res = pd.DataFrame({
    'id': id_list,
    'label': pred_list
}) ------ 테스트 데이터셋의 예측 결과인 id와 레이블(label)을 데이터 프레임에 저장

res.sort_values(by='id', inplace=True)
res.reset_index(drop=True, inplace=True)

res.to_csv('../chap06/data/LeNet', index=False) ------ 데이터 프레임을 CSV 파일로 저장
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.