Импорт модели Keras в TensorFlow.js

Модели 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.