더북(TheBook)

2.1.6 훈련된 모델을 사용해 예측 만들기

네, 좋습니다! 이제 입력이 주어졌을 때 정확하게 다운로드 시간을 예측할 수 있는 모델이 준비되었습니다. 그런데 어떻게 사용할까요? 방법은 바로 모델의 predict() 메서드입니다.

> const smallFileMB = 1;
> const bigFileMB = 100;
> const hugeFileMB = 10000;
> model.predict(tf.tensor2d([[smallFileMB], [bigFileMB],
     [hugeFileMB]])).print();
Tensor
    [[0.1373825  ],
     [7.2438402  ],
     [717.8896484]]

모델이 10,000MB 파일 다운로드에 약 718초가 걸린다고 예측합니다. 훈련 데이터에는 이와 비슷한 크기가 없습니다. 일반적으로 훈련 데이터 범위를 넘는 값을 외삽(extrapolation)하는 것은 매우 위험합니다. 하지만 간단한 문제라서 메모리 버퍼, 입출력 연결 등과 같은 새로운 문제에 부딪히지 않는다면 잘 맞을 수도 있습니다. 이 범위에 드는 훈련 데이터를 수집한다면 더 좋습니다.

입력 변수를 적절한 크기의 텐서로 감싸야 합니다. 코드 2-3에서 inputShape[1]로 정의했기 때문에 모델은 이 크기의 샘플을 기대합니다. fit() 메서드와 predict() 메서드는 한 번에 여러 개의 샘플을 받을 수 있습니다. n개의 샘플을 제공하려면 샘플을 쌓아 크기가 [n, 1]인 입력 텐서 하나로 만들어야 합니다. 이를 까먹고 잘못된 크기의 텐서를 모델에 제공하면 다음과 같이 텐서 크기 오류가 발생합니다.

> model.predict(tf.tensor1d([smallFileMB, bigFileMB, hugeFileMB])).print();
Uncaught Error: Error when checking : expected dense_Dense1_input to have 2
    dimension(s), but got array with shape [3]

매우 자주 발생하는 오류이므로 텐서 크기가 맞지 않는 이런 오류에 주의하세요!

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.