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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Модели Keras (обычно создаваемые с помощью Python API) могут быть сохранены в одном из нескольких форматов . Формат «целой модели» можно преобразовать в формат слоев TensorFlow.js, который можно загрузить непосредственно в TensorFlow.js для логического вывода или дальнейшего обучения.

Целевой формат TensorFlow.js Layers — это каталог, содержащий файл model.json и набор разделенных файлов веса в двоичном формате. Файл 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 Layers.

Если у вас есть модель 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. Обратите внимание, что вам может потребоваться настроить сервер для разрешения совместного использования ресурсов между источниками (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 используют этот подход, используя предварительно обученные модели, которые были преобразованы и размещены в Google Cloud Storage.

Обратите внимание, что вы ссылаетесь на всю модель, используя имя файла model.json . loadModel(...) извлекает model.json , а затем выполняет дополнительные HTTP(S)-запросы, чтобы получить сегментированные файлы веса, указанные в манифесте веса model.json . Этот подход позволяет кэшировать все эти файлы браузером (и, возможно, дополнительными серверами кэширования в Интернете), потому что каждый из model.json и веса меньше, чем типичный предел размера файла кэша. Таким образом, в последующих случаях модель будет загружаться быстрее.

Поддерживаемые функции

Слои TensorFlow.js в настоящее время поддерживают только модели Keras, использующие стандартные конструкции Keras. Модели, использующие неподдерживаемые операции или слои, например настраиваемые слои, слои Lambda, настраиваемые потери или настраиваемые метрики, нельзя импортировать автоматически, поскольку они зависят от кода Python, который невозможно надежно перевести в JavaScript.