① 모델의 정확도를 구합니다.
ⓐ max(1)[1]: .max(dim=0)[0]은 최댓값(max)을 나타내고 .max(dim=0)[1]은 최댓값을 갖는 데이터의 인덱스를 나타냅니다.
ⓑ view(y.size()): logit.max(1)[1]의 결과를 y.size()로 크기를 변경합니다.
ⓒ data == y.data: 모델의 예측 결과(logit.max(1)[1].view(y.size()).data)가 레이블(실제 값, y.data)과 같은지 확인합니다.
ⓓ sum(): 모델의 예측 결과와 레이블(실제 값)이 같으면 그 합을 corrects 변수에 누적하여 저장합니다.
이제 훈련 데이터셋을 이용하여 모델을 학습시키고 검증 데이터셋을 이용하여 성능(정확도)을 확인합니다.
코드 7-27 모델 학습 및 평가
BATCH_SIZE = 100
LR = 0.001
EPOCHS = 5
for e in range(1, EPOCHS + 1):
train(model, optimizer, train_iterator)
val_loss, val_accuracy = evaluate(model, valid_iterator)
print("[EPOCH: %d], Validation Loss: %5.2f | Validation Accuracy: %5.2f" % (e, val_loss, val_accuracy))