더북(TheBook)

4.2.6 합성곱 신경망을 사용해 예측하기

이제 훈련된 합성곱 신경망을 얻었습니다. 손 글씨 숫자 이미지를 분류하는 데 실제 이 모델을 어떻게 사용할까요? 먼저 이미지 데이터를 준비해야 합니다. TensorFlow.js 모델에서 이미지 데이터를 사용하는 방법에는 여러 가지가 있습니다. 이런 방법을 적용할 수 있을 때 차례대로 소개하겠습니다.

 

TypedArrays에서 이미지 텐서 만들기

일부 경우에는 필요한 이미지 데이터가 이미 자바스크립트 TypedArray로 저장되어 있습니다. 여기에서 다루는 MNIST 예제가 이런 경우입니다. 자세한 내용은 data.js에 포함되어 있으니 여기서 상세 내용을 설명하지 않겠습니다. MNIST를 표현하는 올바른 길이의 Float32Array가 주어지면(변수 이름은 imageDataArray), 이를 모델이 기대하는 크기의 4D 텐서로 변환할 수 있습니다.22

let x = tf.tensor4d(imageDataArray, [1, 28, 28, 1]);

tf.tensor4d() 호출의 두 번째 매개변수는 만들 텐서의 크기를 지정합니다. Float32Array(또는 일반적으로 TypedArray)가 이미지 차원에 대한 정보를 가지고 있지 않은 일차원적인 구조이기 때문입니다. imageDataArray는 하나의 이미지를 다루기 때문에 첫 번째 차원의 크기는 1입니다. 이전 예제와 마찬가지로 이미지가 한 개든 여러 개든 상관없이 모델은 항상 훈련, 평가, 추론에서 배치 차원을 기대합니다. Float32Array가 여러 개의 이미지 배치를 포함하고 있다면 첫 번째 차원의 크기가 이미지 개수와 같은 하나의 텐서로 변환할 수 있습니다.

let x = tf.tensor4d(imageDataArray, [numImages, 28, 28, 1]);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.