Keras.js представляет собой библиотеку для работы с предобученными моделями Keras непосредственно в браузере с использованием JavaScript. Основная особенность — возможность выполнять инференс без необходимости запуска Python-сервера, что значительно упрощает интеграцию моделей машинного обучения в веб-приложения. Для полноценной работы с моделями критически важно умение сохранять их в формате, совместимом с Keras.js, и корректно загружать на сервере.
Модели в Keras можно сохранять двумя способами: весь объект
модели целиком или только веса модели. Для
работы с Keras.js рекомендуется использовать формат JSON для описания
архитектуры и отдельные файлы с весами в формате .bin.
from keras.models import load_model
model = load_model('model.h5')
# Экспорт архитектуры модели в JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)
model.to_json() сохраняет структуру слоёв, конфигурацию
активаций, регуляризаторов и прочие параметры.# Сохранение весов в формате HDF5
model.save_weights("weights.h5")
kerasjs-converter, которые преобразуют HDF5 в бинарные
.bin файлы.kerasjs-converter --input model.json --weights weights.h5 --output kerasjs-model/
kerasjs-model будут файлы
model.json и отдельные бинарные файлы с весами.Keras.js работает полностью на стороне клиента, однако сервер играет
роль хранилища моделей. Для обеспечения быстрого доступа рекомендуется
хранить модели в статическом каталоге сервера, например
public/models/.
public/
└── models/
└── my_model/
├── model.json
├── group1-shard1of1.bin
└── ...
model.json — описание архитектуры.group*-shard*.bin — веса модели, разбитые на
чанки.application/json для JSON и
application/octet-stream для бинарных файлов).const express = require('express');
const path = require('path');
const app = express();
app.use('/models', express.static(path.join(__dirname, 'public/models')));
app.listen(3000, () => {
console.log('Server running on http://localhost:3000');
});
http://localhost:3000/models/my_model/model.json.После размещения модели на сервере её можно использовать для инференса в браузере.
const KerasJS = require('keras-js');
const model = new KerasJS.Model({
filepath: 'http://localhost:3000/models/my_model/model.json',
gpu: true
});
model.ready()
.then(() => {
const inputData = { input_1: new Float32Array([/* данные */]) };
return model.predict(inputData);
})
.then(outputData => {
console.log('Результат предсказания:', outputData);
})
.catch(err => console.error('Ошибка загрузки модели:', err));
gpu: true позволяет использовать WebGL для
ускоренного вычисления.ready() гарантирует, что все веса загружены и
модель готова к инференсу..bin-часть соответствует отдельной матрице весов
слоя.Для обновления модели на сервере:
my_model_v2)
для предотвращения конфликтов.Систематическое соблюдение этих правил гарантирует корректную работу Keras.js в браузере и упрощает управление моделями на сервере.