더북(TheBook)

model.save()는 일반적으로 파일이나 네트워크로 입출력을 수행하기 때문에 비동기 함수입니다. 이 때문에 save() 메서드 호출에 await를 사용합니다. modelSavePath가 /tmp/tfjs-node-mnist라고 가정할 경우, model.save() 호출이 끝나면 이 디렉터리의 내용을 확인할 수 있습니다.27

ls -lh /tmp/tfjs-node-mnist

아마 다음과 같은 파일 목록이 출력될 것입니다.

-rw-r--r-- 1 user group 4.6K Aug 14 10:38 model.json
-rw-r--r-- 1 user group 2.3M Aug 14 10:38 weights.bin

두 개의 파일을 볼 수 있습니다.

model.json은 모델의 토폴로지(topology)를 담고 있는 JSON 파일입니다. 토폴로지가 의미하는 것은 모델을 구성하는 층 타입과 (conv2d 층의 filters, dropout 층의 rate 매개변수 같은) 설정 매개변수, 층이 서로 연결되는 방식을 포함합니다. MNIST 합성곱 신경망의 경우 시퀀셜 모델이므로 연결이 단순합니다. 간단하지 않은 연결 패턴을 가진 모델을 보게 될 것입니다. 이런 모델도 model.save() 메서드로 디스크에 저장할 수 있습니다.

모델 토폴로지 이외에 model.json은 모델 가중치의 매니페스트(manifest)도 담고 있습니다. 여기에는 모든 모델 가중치의 이름, 크기, 데이터 타입, 가중치 값이 저장된 위치가 나열되어 있습니다. 이제 두 번째 파일 weights.bin이 필요합니다.

이름에서 알 수 있듯이 weights.bin은 모든 모델의 가중치 값을 저장하고 있는 이진 파일입니다. 개별 가중치가 시작되고 끝나는 경계가 없는 단순한 이진 스트림입니다. model.json에 있는 JSON 객체의 weightsManifest 부분에 이에 대한 메타 정보가 있습니다.

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