Accuracy plot을 위한 CSV 파일 저장

논문은 예쁜 그림이 있어야 한다. 그래서 따로 그림을 그리기 위하여 결과값을 별도로 저장하여 CSV로 저장한다.

  • global 과 local 변수가 분리되고 서로 간섭이 어렵기도 하고 안되는 부분도 있다.
  • 학습과 평가하는 함수 내부에서 결과를 모두 모아서 CSV로 저장하는 방법을 이용한다.
import csv

학습 시키는 함수 내부 상단에 header로 첫 자료를 입력시킨다. 그리고 진행 과정마다 계속 마지막에 추가시킨다. accuracy는 tensor로 저장되므로 숫자 부분만 가져오기 위해서 .tolist()를 붙인다. CSV 저장하는 부분은 파이썬 홈페이지 예시에서 동일하게 가져왔다.

def train_model(model, criterion, optimizer, epochs):
    ...
    result_list = [['epoch', 'phase', 'loss', 'accu']]
    ...
    for epoch in range(epochs):
        for phase in ['train', 'val']:
            ...
            result_list.append([epoch, phase, epoch_loss, 
                                epoch_acc.tolist()])

    ...
    with open('result.csv', 'w') as f:
        writer = csv.writer(f)
        writer.writerows(result_list)
    return model