Importowanie modelu Keras do TensorFlow.js

Modele Keras (zwykle tworzone za pomocą interfejsu API języka Python) można zapisać w jednym z kilku formatów . Format „całego modelu” można przekonwertować na format warstw TensorFlow.js, który można załadować bezpośrednio do TensorFlow.js w celu wyciągnięcia wniosków lub dalszego szkolenia.

Docelowy format warstw TensorFlow.js to katalog zawierający plik model.json i zestaw plików wag podzielonych na fragmenty w formacie binarnym. Plik model.json zawiera zarówno topologię modelu (zwaną także „architekturą” lub „wykresem”: opis warstw i sposobu ich połączenia), jak i manifest plików wag.

Wymagania

Procedura konwersji wymaga środowiska Python; możesz zachować izolowany, używając pipenv lub virtualenv . Aby zainstalować konwerter, użyj pip install tensorflowjs .

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

Krok 1. Konwertuj istniejący model Keras do formatu warstw TF.js

Modele Keras są zwykle zapisywane poprzez model.save(filepath) , który tworzy pojedynczy plik HDF5 (.h5) zawierający zarówno topologię modelu, jak i wagi. Aby przekonwertować taki plik do formatu TF.js Layers, uruchom następującą komendę, gdzie path/to/my_model.h5 to źródłowy plik Keras .h5, a path/to/tfjs_target_dir to docelowy katalog wyjściowy 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 języka Python, aby wyeksportować bezpośrednio do formatu warstw TF.js

Jeśli masz model Keras w Pythonie, możesz go wyeksportować bezpośrednio do formatu warstw TensorFlow.js 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, aby udostępnić przekonwertowane pliki modelu wygenerowane w kroku 1. Pamiętaj, że może być konieczne skonfigurowanie serwera tak, aby zezwalał na udostępnianie zasobów między źródłami (CORS) , aby umożliwić pobieranie plików w języku JavaScript.

Następnie załaduj model do TensorFlow.js, podając adres URL 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żna natychmiast wykorzystać do prognozy:

// JavaScript

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

Wiele przykładów TensorFlow.js wykorzystuje to podejście, korzystając ze wstępnie wytrenowanych modeli, które zostały przekonwertowane i hostowane w Google Cloud Storage.

Pamiętaj, że odwołujesz się do całego modelu, używając nazwy pliku model.json . loadModel(...) pobiera model.json , a następnie wysyła dodatkowe żądania HTTP(S) w celu uzyskania plików wag podzielonych na fragmenty, do których odwołuje się manifest wagi model.json . Takie podejście pozwala na buforowanie wszystkich tych plików przez przeglądarkę (i być może przez dodatkowe serwery buforujące w Internecie), ponieważ plik model.json i fragmenty wagi są mniejsze niż typowy limit rozmiaru pliku pamięci podręcznej. Dlatego przy kolejnych okazjach model będzie prawdopodobnie ładował się szybciej.

Obsługiwane funkcje

Warstwy TensorFlow.js obsługują obecnie tylko modele Keras przy użyciu standardowych konstrukcji Keras. Modeli korzystających z nieobsługiwanych operacji lub warstw — np. warstw niestandardowych, warstw Lambda, niestandardowych strat lub niestandardowych metryk — nie można importować automatycznie, ponieważ zależą one od kodu Pythona, którego nie można wiarygodnie przetłumaczyć na JavaScript.