Keras.js предоставляет возможность загружать и использовать модели, обученные с помощью Keras, непосредственно в браузере на JavaScript. Для этого требуется экспортировать структуру модели и её веса в формате, который Keras.js способен интерпретировать: JSON для архитектуры и бинарный формат для весов.
Модель Keras состоит из последовательности слоёв с различными параметрами: тип слоя, количество нейронов, функции активации и другие настройки. Для переноса модели в Keras.js архитектура сохраняется в формате JSON. Пример кода на Python для экспорта:
from keras.models import load_model
import json
model = load_model('my_model.h5')
# Сохраняем структуру модели в JSON
model_json = model.to_json()
with open('model.json', 'w') as json_file:
json_file.write(model_json)
В файле model.json содержится объект JSON с описанием
слоёв, конфигурацией каждой функции активации и параметрами компиляции.
Важно: JSON не содержит веса, только архитектуру.
Пример структуры JSON для простой модели:
{
"class_name": "Sequential",
"config": {
"name": "sequential",
"layers": [
{
"class_name": "Dense",
"config": {
"units": 64,
"activation": "relu",
"name": "dense_1"
}
},
{
"class_name": "Dense",
"config": {
"units": 10,
"activation": "softmax",
"name": "dense_2"
}
}
]
}
}
Весовые коэффициенты модели необходимо сохранять отдельно. Keras.js
ожидает веса в бинарном формате (.bin), соответствующем
JSON. Для этого используется метод save_weights с указанием
формата HDF5 или через конвертацию в бинарные массивы.
Пример сохранения весов через Python и Numpy:
import numpy as np
weights = model.get_weights()
for i, w in enumerate(weights):
np.save(f'weight_{i}.npy', w)
Для работы с Keras.js обычно используется утилита
kerasjs-converter, которая автоматически преобразует веса
из формата HDF5 в бинарный файл, совместимый с Jav * aScript:
kerasjs-converter --input_model my_model.h5 --output_model ./kerasjs_model
Результатом будет папка kerasjs_model с двумя основными
файлами:
model.json — архитектура модели.model_weights.buf — бинарные веса.В браузере или Node.js загрузка модели осуществляется через объект
KerasJS.Model. Пример инициализации:
const model = new KerasJS.Model({
filepaths: {
model: 'model.json',
weights: 'model_weights.buf'
},
gpu: true
});
model.ready()
.then(() => {
const inputData = new Float32Array([/* данные для предсказания */]);
return model.predict({ input_1: inputData });
})
.then(outputData => {
console.log(outputData);
});
Особенности загрузки:
fetch или локальные пути
при работе через локальный сервер.gpu: true позволяет ускорить вычисления на WebGL.Бинарный файл содержит все веса модели в порядке, соответствующем слоям. В Keras.js используется последовательная запись float32 массивов. Каждое ядро и смещение слоёв записаны отдельно, что обеспечивает корректное распределение при загрузке.
Важно соблюдать точный порядок слоёв и их параметров, иначе модель не будет работать. Конвертация через официальные утилиты Keras.js автоматически решает эту проблему.
pruning перед экспортом для ускорения работы
в браузере.Экспорт модели в JSON и бинарные веса является ключевым шагом при переносе Keras-моделей в JavaScript, обеспечивая совместимость и возможность выполнения предсказаний без серверной части.