더북(TheBook)

코드 2-1에서 데이터를 두 개의 서브셋(subset) trainDatatestData로 나누었습니다. trainData는 훈련 세트입니다. 이 데이터 세트는 모델이 훈련할 샘플을 담고 있습니다. testData는 테스트 세트입니다. 이 데이터 세트를 사용해 훈련이 끝난 모델의 성능을 평가합니다. 동일한 데이터로 모델을 훈련하고 평가하면 이미 정답을 보고 나서 시험을 보는 것과 같습니다. 좋은 학습 알고리즘은 아니지만 극단적으로 모델이 훈련 데이터에 있는 모든 sizeMB에 대한 timeSec 값을 외울 수 있습니다. 결과적으로 미래 성능을 올바르게 판단할 수 없습니다. 미래의 입력 특성은 모델이 훈련에 사용한 샘플과 정확히 같지 않을 가능성이 높기 때문입니다.

따라서 작업 흐름은 다음과 같습니다. 먼저 신경망이 sizeMB가 주어졌을 때 timeSec를 정확하게 예측할 수 있도록 훈련 데이터에서 훈련합니다. 그다음, 이 신경망으로 테스트 세트에 있는 sizeMB에 대한 예측을 만듭니다. 그러고 나서 이 예측이 테스트 세트에 있는 timeSec와 얼마나 가까운지 측정하겠습니다. 하지만 먼저 이 데이터를 TensorFlow.js가 이해할 수 있는 포맷으로 변경해야 합니다. 이 작업이 텐서를 사용하는 첫 번째 예제입니다. 코드 2-2는 앞으로 책에서 보게 될 tf.* 네임스페이스 아래에 있는 함수를 처음 사용합니다. 여기서는 자바스크립트 원시 데이터 구조로 저장된 데이터를 변환해 주는 메서드를 볼 수 있습니다.

간단한 사용 예지만 이런 API를 자세히 이해하고 싶은 독자는 부록 C를 참고하세요. tf.tensor2d() 같은 텐서 생성 함수뿐만 아니라 텐서를 변환하거나 연결하는 연산을 수행하는 함수도 소개합니다. 그리고 이미지나 비디오와 같이 실전에서 자주 사용하는 데이터 타입을 텐서로 변환하는 일반적인 패턴을 설명합니다. 본문에서는 저수준 API를 깊게 설명하지 않습니다. 이런 내용은 재미없고 특정 예제와 관련되어 있지 않기 때문입니다.

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