최신 노트북에 있는 브라우저에서 이 모델을 200번의 에포크 동안 훈련하는 데 약 11초 걸립니다. 이제 테스트 세트에서 모델을 평가하여 기준 손실보다 더 나은지 확인해 보죠. 다음 코드는 model.evaluate()를 사용해 테스트 데이터에서 모델의 성능을 평가하고 화면을 업데이트하는 방법을 보여 줍니다.
코드 2-15 테스트 데이터에서 모델을 평가하고 UI 업데이트하기(index.js)
ui.updateStatus('테스트 데이터에서 평가합니다...');
const result = model.evaluate(
tensors.testFeatures, tensors.testTarget, {batchSize: BATCH_SIZE});
const testLoss = result.dataSync()[0];
const trainLoss = trainLogs[trainLogs.length - 1].loss;
const valLoss = trainLogs[trainLogs.length - 1].val_loss;
await ui.updateModelStatus(
'훈련 세트 최종 손실: ${trainLoss.toFixed(4)}\n' +
'검증 세트 최종 손실: ${valLoss.toFixed(4)}\n' +
'테스트 세트 손실: ${testLoss.toFixed(4)}',
modelName);
여기에서 model.evaluate()는 테스트 세트에서 계산한 손실을 담은 스칼라(scalar)(0D 텐서) 값을 반환합니다.
경사 하강법의 무작위성 때문에 조금 다른 결과가 나올 수 있지만, 일반적으로 다음과 같은 결과를 얻을 수 있습니다.
• 훈련 세트 최종 손실: 23.4724
• 검증 세트 최종 손실: 25.2567
• 테스트 세트 손실: 24.4759
• 기준 손실: 85.58