논문은 예쁜 그림이 있어야 한다. 그래서 따로 그림을 그리기 위하여 결과값을 별도로 저장하여 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