Keras.js — это библиотека для работы с нейронными сетями, разработанная на JavaScript, которая позволяет загружать и выполнять предобученные модели Keras Python прямо в браузере. Основное преимущество заключается в переносе вычислений на клиентскую сторону без необходимости серверной инфраструктуры для инференса.
Перед использованием модели в Keras.js необходимо выполнить несколько шагов по подготовке модели:
Сохранение модели в формате JSON и весов В Keras Python модель сохраняется в два отдельных файла:
.json.bin или
.h5, затем преобразованные в бинарный формат,
поддерживаемый Keras.js.Пример сохранения архитектуры и весов:
from keras.models import model_from_json
# Сохранение архитектуры
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
# Сохранение весов
model.save_weights("model.h5")Конвертация весов в формат Keras.js Keras.js не
может напрямую работать с форматом .h5. Необходимо
использовать утилиту kerasjs-converter, которая преобразует
.h5 в JSON с бинарными данными:
kerasjs-converter model.json model.h5 build/
В результате создаются два файла: model.json
(архитектура + ссылки на веса) и набор бинарных файлов с
весами.
После подготовки файлов их можно загружать с помощью Keras.js в
браузере или Node.js. Основной класс для работы —
KerasJS.Model.
const KerasJS = require('keras-js');
// Инициализация модели
const model = new KerasJS.Model({
filepaths: {
model: 'build/model.json',
weights: 'build/model_weights.buf'
},
gpu: true // использование WebGL, если поддерживается
});
// Загрузка модели
model.ready()
.then(() => {
console.log('Модель готова к инференсу');
})
.catch(err => {
console.error('Ошибка загрузки модели:', err);
});
Особенности загрузки:
filepaths.model — путь к JSON-файлу с архитектурой
модели.filepaths.weights — путь к бинарному файлу с
весами.gpu: true включает вычисления на GPU через
WebGL, что значительно ускоряет инференс в браузере.После успешной загрузки модели можно выполнять прогнозирование. Keras.js принимает данные в виде Float32Array или стандартного массива чисел. Для многомерных входов необходимо правильно задавать форму тензора.
// Пример входного массива для модели с одним входом размером [1, 28, 28]
const inputData = new Float32Array(28 * 28); // Заполнить значениями пикселей
model.predict({ input: inputData })
.then(outputData => {
console.log('Результат инференса:', outputData.output);
})
.catch(err => {
console.error('Ошибка при прогнозе:', err);
});
Важные моменты:
Dense, Conv2D, MaxPooling2D,
Flatten, Activation и другие базовые
слои.gpu: true
позволяет значительно ускорить вычисления.Загрузка и использование предобученных моделей Keras Python в Keras.js позволяет переносить нейронные сети в браузер, создавая интерактивные приложения с поддержкой машинного обучения без необходимости серверных вычислений.