Keras 모델을 TensorFlow.js로 가져오기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Keras 모델(일반적으로 Python API를 통해 생성됨) 은 여러 형식 중 하나로 저장할 수 있습니다. "전체 모델" 형식은 추론이나 추가 교육을 위해 TensorFlow.js에 직접 로드할 수 있는 TensorFlow.js 레이어 형식으로 변환할 수 있습니다.

대상 TensorFlow.js 레이어 형식은 model.json 파일과 바이너리 형식의 분할된 가중치 파일 집합을 포함하는 디렉터리입니다. model.json 파일에는 모델 토폴로지(일명 "아키텍처" 또는 "그래프": 계층 및 계층 연결 방법에 대한 설명)와 가중치 파일의 매니페스트가 모두 포함되어 있습니다.

요구 사항

변환 절차에는 Python 환경이 필요합니다. pipenv 또는 virtualenv 를 사용하여 격리된 것을 유지하고 싶을 수 있습니다. 변환기를 설치하려면 pip install tensorflowjs 를 사용하세요.

Keras 모델을 TensorFlow.js로 가져오는 것은 2단계 프로세스입니다. 먼저 기존 Keras 모델을 TF.js Layers 형식으로 변환한 다음 TensorFlow.js에 로드합니다.

1단계. 기존 Keras 모델을 TF.js 레이어 형식으로 변환

Keras 모델은 일반적으로 모델 토폴로지와 가중치를 모두 포함하는 단일 HDF5(.h5) 파일을 생성하는 model.save(filepath) 를 통해 저장됩니다. 이러한 파일을 TF.js 레이어 형식으로 변환하려면 다음 명령을 실행하십시오. 여기서 path/to/my_model.h5 는 소스 Keras .h5 파일이고 path/to/tfjs_target_dir 은 TF.js 파일의 대상 출력 디렉토리입니다.

# bash

tensorflowjs_converter --input_format keras \
                       path/to/my_model.h5 \
                       path/to/tfjs_target_dir

대안: Python API를 사용하여 TF.js 레이어 형식으로 직접 내보내기

Python에 Keras 모델이 있는 경우 다음과 같이 TensorFlow.js Layers 형식으로 직접 내보낼 수 있습니다.

# Python

import tensorflowjs as tfjs

def train(...):
    model = keras.models.Sequential()   # for example
    ...
    model.compile(...)
    model.fit(...)
    tfjs.converters.save_keras_model(model, tfjs_target_dir)

2단계: 모델을 TensorFlow.js에 로드

웹 서버를 사용하여 1단계에서 생성한 변환된 모델 파일을 제공합니다. JavaScript에서 파일 가져오기를 허용하려면 CORS(Cross-Origin Resource Sharing)를 허용하도록 서버를 구성해야 할 수 있습니다.

그런 다음 model.json 파일에 대한 URL을 제공하여 모델을 TensorFlow.js에 로드합니다.

// JavaScript

import * as tf from '@tensorflow/tfjs';

const model = await tf.loadLayersModel('https://foo.bar/tfjs_artifacts/model.json');

이제 모델을 추론, 평가 또는 재학습할 준비가 되었습니다. 예를 들어, 로드된 모델을 즉시 사용하여 예측할 수 있습니다.

// JavaScript

const example = tf.fromPixels(webcamElement);  // for example
const prediction = model.predict(example);

많은 TensorFlow.js 예제 는 Google Cloud Storage에서 변환 및 호스팅된 사전 학습된 모델을 사용하여 이 접근 방식을 취합니다.

model.json 파일 이름을 사용하여 전체 모델을 참조한다는 점에 유의하십시오. loadModel(...)model.json 을 가져온 다음 model.json 가중치 매니페스트에서 참조하는 분할된 가중치 파일을 가져오기 위해 추가 HTTP(S) 요청을 수행합니다. 이 접근 방식을 사용하면 model.json 과 weight shard가 각각 일반적인 캐시 파일 크기 제한보다 작기 때문에 브라우저에서 이러한 모든 파일을 캐시할 수 있습니다. 따라서 모델은 이후의 경우에 더 빨리 로드될 수 있습니다.

지원되는 기능

TensorFlow.js 레이어는 현재 표준 Keras 구성을 사용하는 Keras 모델만 지원합니다. 지원되지 않는 작업 또는 계층(예: 사용자 지정 계층, Lambda 계층, 사용자 지정 손실 또는 사용자 지정 지표)을 사용하는 모델은 JavaScript로 안정적으로 변환할 수 없는 Python 코드에 의존하기 때문에 자동으로 가져올 수 없습니다.