Keras.js — это библиотека, предназначенная для запуска моделей Keras непосредственно в браузере с использованием JavaScript и WebGL. Одной из ключевых особенностей является поддержка двух форматов сохранения моделей: LayersModel и GraphModel, которые определяют структуру сети, способ загрузки и совместимость с различными типами архитектур.
LayersModel — это основной формат для последовательных и функциональных моделей Keras, который используется для моделей с линейной или частично ветвящейся архитектурой.
Структура LayersModel:
JSON-файл модели Содержит описание слоев, их конфигурацию и взаимосвязи. Структура файла определяется стандартом Keras:
class_name: тип слоя (Dense, Conv2D, LSTM и др.)config: параметры слоя (количество нейронов, активация,
размер ядра и т.д.)inbound_nodes: связи с предыдущими слоямиБинарные файлы весов (.bin) Содержат веса всех слоев модели в формате float32. Обычно один файл на всю модель, но при больших моделях могут быть разделены на несколько частей.
Пример загрузки LayersModel в Keras.js:
const model = new KerasJS.Model({
filepath: 'model/model.json',
gpu: true
});
await model.ready();
Особенности LayersModel:
GraphModel предназначен для более сложных архитектур, где модель может содержать сложные графы зависимостей между слоями, ветвления и skip-соединения. Этот формат часто используется для моделей с ResNet-подобной структурой или многовыходными моделями.
Структура GraphModel:
JSON-файл модели Описывает полный граф вычислений, включая узлы (слои), их входы и выходы.
nodes: список всех слоев с параметрамиinputs и outputs: обозначение входных и
выходных точек графаlayers: детализированное описание каждого слоя с
конфигурацией и связямиФайлы весов Поддерживают как отдельные файлы для каждого слоя, так и один объединённый файл. Формат float32.
Пример использования GraphModel в Keras.js:
const model = new KerasJS.Model({
filepath: 'graph_model/model.json',
gpu: true
});
await model.ready();
Особенности GraphModel:
| Характеристика | LayersModel | GraphModel |
|---|---|---|
| Архитектура | Последовательная или простая функциональная | Сложный граф с ветвлениями и skip-соединениями |
| JSON-файл | Описание слоев и их конфигурации | Полный граф вычислений |
| Веса | Один или несколько бинарных файлов | Отдельные файлы на слой или объединённый |
| Использование | Простые модели Keras | Модели ResNet, Inception, многовыходные сети |
| Поддержка Keras слоев | Большинство стандартных слоев | Полный набор с графовыми связями |
Экспорт из Keras:
.h5) или использовать model.to_json() для
получения структуры.Конвертация в Keras.js:
kerasjs-converter,
которая преобразует .h5 в JSON + бинарные веса.Оптимизация для браузера:
После подготовки модели ключевой шаг — её интеграция в JavaScript-код:
const inputData = new Float32Array([/* входные данные */]);
const outputData = await model.predict({ input: inputData });
console.log(outputData.output);
Ключевые моменты:
gpu: true позволяет использовать WebGL для ускорения
вычислений.Механизм выбора между LayersModel и GraphModel напрямую зависит от структуры нейронной сети и требований к производительности в браузере. Грамотная подготовка и корректная конвертация модели позволяют полностью использовать возможности Keras.js для клиентских приложений на JavaScript.