더북(TheBook)

모델 훈련이 완료되면 작동 여부를 확인하고 싶을 것입니다. 훈련 동안 사용하지 않은 데이터에서 모델을 평가하는 것이 중요합니다. 훈련 데이터에서 테스트 데이터를 분리하는 (그래서 테스트 데이터에서 훈련하지 않도록 피하는) 주제는 이 책에서 계속 등장합니다. 머신 러닝 워크플로에서 꼭 기억해야 할 중요한 부분입니다.

모델의 evaluate() 메서드는 주어진 샘플 특성과 타깃에 대한 손실 함수 값을 계산합니다. 동일한 손실을 계산하는 점에서 fit() 메서드와 비슷하지만, evaluate() 메서드는 모델의 가중치를 업데이트하지 않습니다. evaluate() 메서드를 사용해 테스트 세트에 대한 모델의 성능을 추정합니다. 따라서 모델이 미래에 적용되었을 때 어떤 성능을 낼지 가늠할 수 있습니다.

> model.evaluate(testTensors.sizeMB, testTensors.timeSec).print();
Tensor
    0.31778740882873535

테스트 데이터에 대한 출력된 손실은 약 0.318입니다. 기본적으로 모델은 랜덤한 상태에서부터 훈련되기 때문에 매번 다른 값이 출력될 수 있습니다. 다르게 말하면, 평균 절댓값 오차(Mean Absolute Error, MAE)는 약 0.3초가 조금 넘습니다. 좋은 결과인가요? 그냥 하나의 상수를 예측하는 것보다 나을까요? 대표적으로 선택할 수 있는 상수는 다운로드 시간의 평균입니다. TensorFlow.js가 제공하는 텐서 수학 연산을 사용해 어떤 오차를 얻을 수 있는지 확인해 보죠. 먼저 훈련 세트에 대한 다운로드 시간 평균을 계산합니다.

> const avgDelaySec = tf.mean(trainData.timeSec);
> avgDelaySec.print();
Tensor
    0.2950500249862671
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.