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 z wstępnie wyszkolonych 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ż 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.