Модели Keras (обычно создается с помощью API Python) могут быть сохранены в одном из нескольких форматов . Формат «всей модели» можно преобразовать в формат слоев TensorFlow.js, который можно загрузить непосредственно в TensorFlow.js для вывода или для дальнейшего обучения.
Целевой TensorFlow.js Layers формат представляет собой каталог , содержащий model.json
файл и набор sharded файлов вес в двоичном формате. model.json
файл содержит как модель топологии ( так называемой «архитектуру» или «график»: описание слоев , и как они связаны) и манифест файлов веса.
Требования
Для процедуры преобразования требуется среда Python; Вы можете сохранить изолированную один с помощью pipenv или virtualenv . Для того, чтобы установить конвертер, используйте pip install tensorflowjs
.
Импорт модели Keras в TensorFlow.js - это двухэтапный процесс. Сначала преобразуйте существующую модель Keras в формат слоев TF.js, а затем загрузите ее в TensorFlow.js.
Шаг 1. Преобразование существующей модели Keras в формат слоев TF.js.
Модели Keras обычно сохраняется через model.save(filepath)
, который производит один файл HDF5 (.h5) , содержащий как топологию модели и весы. Для того, чтобы преобразовать такой файл в формате TF.js Layers, выполните следующую команду, где 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.
Если у вас есть модель Keras в Python, вы можете экспортировать ее непосредственно в формат слоев TensorFlow.js следующим образом:
# 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. Обратите внимание , что вам может понадобиться настроить сервер для разрешить Cross-Origin Resource Sharing (CORS) , для того , чтобы разрешить извлечение файлов в JavaScript.
Затем загрузите модель в TensorFlow.js, указав URL-адрес файла model.json:
// 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 примеров принять этот подход, используя pretrained модели , которые были преобразованы и размещенной в Google Cloud Storage.
Обратите внимание , что вы ссылаетесь на всю модель , используя model.json
имя файла. loadModel(...)
получает model.json
, а затем делает дополнительный HTTP (S) запросов для получения sharded файлов веса ссылки в model.json
вес манифеста. Такой подход позволяет все эти файлы в кэше в браузере (и , возможно , с помощью дополнительных серверов кэширования в Интернете), потому что model.json
и черепки вес каждый меньше , чем типичный предельный размер файла кэша. Таким образом, в последующих случаях модель, вероятно, будет загружаться быстрее.
Поддерживаемые функции
В настоящее время слои TensorFlow.js поддерживают только модели Keras, использующие стандартные конструкции Keras. Модели, использующие неподдерживаемые операции или слои - например, пользовательские слои, слои Lambda, пользовательские потери или пользовательские метрики - не могут быть автоматически импортированы, поскольку они зависят от кода Python, который нельзя надежно преобразовать в JavaScript.