Importowanie modelu Keras do TensorFlow.js

Modele Keras (zazwyczaj tworzone za pośrednictwem interfejsu API Pythona) mogą być zapisane w jednym z kilku formatów . Format „całego modelu” można przekonwertować na format TensorFlow.js Layers, który można załadować bezpośrednio do TensorFlow.js w celu wnioskowania lub dalszego szkolenia.

TensorFlow.js docelowe Warstwy format jest katalogiem zawierającym model.json pliku oraz zestaw sharded plików wagi w formacie binarnym. model.json plik zawiera zarówno topologii modelu (aka „architektura” lub „Wykres”: opis warstw i sposobu ich połączenia) i oczywistego plików wagi.

Wymagania

Procedura konwersji wymaga środowiska Python; Może chcesz zachować odosobnione użyciu pipenv lub virtualenv . Aby zainstalować konwerter, korzystanie pip install tensorflowjs .

Importowanie modelu Keras do TensorFlow.js to proces dwuetapowy. Najpierw przekonwertuj istniejący model Keras na format TF.js Layers, a następnie załaduj go do TensorFlow.js.

Krok 1. Konwertuj istniejący model Keras na format TF.js Layers

Modele Keras są zazwyczaj zapisywane przez model.save(filepath) , który tworzy plik pojedynczy HDF5 (.h5) zawierający zarówno topologię modelu i ciężarów. Aby przekonwertować taki plik do formatu TF.js Warstwy, uruchom następujące polecenie, gdzie path/to/my_model.h5 jest źródłem Keras .h5 pliku i path/to/tfjs_target_dir jest katalog wyjściowy docelowy dla plików TF.js:

# bash

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

Alternatywa: użyj interfejsu API Pythona, aby wyeksportować bezpośrednio do formatu TF.js Layers

Jeśli masz model Keras w Pythonie, możesz wyeksportować go bezpośrednio do formatu TensorFlow.js Layers w następujący sposób:

# 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)

Krok 2: Załaduj model do TensorFlow.js

Użyj serwera WWW służyć przekonwertowane pliki modeli wygenerowane w kroku 1. Należy pamiętać, że może trzeba skonfigurować serwer, aby umożliwić Cross-Origin Resource Sharing (CORS) , w celu umożliwienia pobierania plików w JavaScript.

Następnie załaduj model do TensorFlow.js, podając adres URL do pliku model.json:

// JavaScript

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

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

Teraz model jest gotowy do wnioskowania, oceny lub ponownego uczenia. Na przykład załadowany model może być natychmiast użyty do wykonania prognozy:

// JavaScript

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

Wiele TensorFlow.js przykładach takie podejście, używając pretrained modele, które zostały zamienione i hostowane na Google Cloud Storage.

Należy pamiętać, że odnoszą się do całego modelu z wykorzystaniem model.json pliku. loadModel(...) pobiera model.json , a następnie czyni dodatkowy HTTP (S) wnioski w celu uzyskania sharded plików waga odwołuje w model.json manifeście wagi. Takie podejście pozwala na wszystkie te pliki mają być buforowane przez przeglądarkę (a może przez dodatkowych serwerów buforowania w internecie), ponieważ model.json i odłamki waga oznaczają mniejszy niż typowy limit rozmiaru pliku cache. W ten sposób model może ładować się szybciej przy kolejnych okazjach.

Obsługiwane funkcje

TensorFlow.js Layers obecnie obsługuje tylko modele Keras używające standardowych konstrukcji Keras. Modele wykorzystujące nieobsługiwane operacje lub warstwy — np. warstwy niestandardowe, warstwy lambda, straty niestandardowe lub niestandardowe metryki — nie mogą być automatycznie importowane, ponieważ zależą od kodu Pythona, którego nie można wiarygodnie przetłumaczyć na JavaScript.