Модели Keras (обычно создаваемые с помощью API Python) могут быть сохранены в одном из нескольких форматов . Формат «вся модели» можно преобразовать в формат слоев TensorFlow.js, который можно загрузить непосредственно в TensorFlow.js для вывода или дальнейшего обучения.
Целевой формат слоев TensorFlow.js — это каталог, содержащий файл 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, выполните следующую команду, где 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
Альтернатива: используйте API Python для экспорта непосредственно в формат слоев 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. Обратите внимание, что вам может потребоваться настроить сервер на разрешение совместного использования ресурсов между источниками (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.
Обратите внимание, что вы ссылаетесь на всю модель, используя имя файла model.json
. loadModel(...)
извлекает model.json
, а затем выполняет дополнительные запросы HTTP(S) для получения файлов сегментированных весов, указанных в манифесте веса model.json
. Этот подход позволяет кэшировать все эти файлы браузером (и, возможно, дополнительными серверами кэширования в Интернете), поскольку каждый из model.json
и сегментов веса меньше типичного ограничения размера файла кэша. Таким образом, в последующих случаях модель, скорее всего, будет загружаться быстрее.
Поддерживаемые функции
Слои TensorFlow.js в настоящее время поддерживают только модели Keras, использующие стандартные конструкции Keras. Модели, использующие неподдерживаемые операции или слои — например, пользовательские слои, слои Lambda, пользовательские потери или пользовательские метрики — не могут быть автоматически импортированы, поскольку они зависят от кода Python, который невозможно надежно перевести в JavaScript.