Modele Keras (zwykle tworzone za pomocą API Pythona) można zapisać 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.
Docelowy format TensorFlow.js Layers to katalog zawierający plik model.json
i zestaw podzielonych na fragmenty plików wagi w formacie binarnym. Plik model.json
zawiera zarówno topologię modelu (inaczej „architekturę” lub „wykres”: opis warstw i sposób ich połączenia), jak i manifest plików wagi.
Wymagania
Procedura konwersji wymaga środowiska Python; możesz chcieć zachować izolację za pomocą 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 TF.js Layers, a następnie załaduj go do TensorFlow.js.
Krok 1. Konwertuj istniejący model Keras do formatu TF.js Layers
Modele Keras są zwykle zapisywane przez model.save(filepath)
, który tworzy pojedynczy plik HDF5 (.h5) zawierający zarówno topologię modelu, jak i wagi. Aby przekonwertować taki plik na format TF.js Layers, uruchom następujące polecenie, 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 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 do obsługi przekonwertowanych plików modeli wygenerowanych 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 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 przykładów TensorFlow.js stosuje to podejście, używając wstępnie wytrenowanych modeli, które zostały przekonwertowane i hostowane w Google Cloud Storage.
Zauważ, że odwołujesz się do całego modelu za pomocą nazwy pliku model.json
. loadModel(...)
pobiera model.json
, a następnie wykonuje dodatkowe żądania HTTP(S) w celu uzyskania plików wagi podzielonej na fragmenty, do których odwołuje się manifest wagi model.json
. Takie podejście umożliwia buforowanie wszystkich tych plików przez przeglądarkę (i być może przez dodatkowe serwery pamięci podręcznej w Internecie), ponieważ model.json
i fragmenty wagi są mniejsze niż typowy limit rozmiaru pliku pamięci podręcznej. 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 używające nieobsługiwanych operacji lub warstw — 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.