Для работы с Keras.js в среде Node.js используется пакет
keras-js, который предоставляет возможность загружать и
выполнять модели, подготовленные с использованием Keras в Python.
Установка производится через npm:
npm install keras-js
Подключение в коде осуществляется стандартным образом:
const KerasJS = require('keras-js');
Важно учитывать, что Keras.js ориентирован на использование моделей,
экспортированных в форматах .json для структуры сети и
.bin для весов.
Модель Keras необходимо сначала экспортировать в формат, поддерживаемый Keras.js. В Python это выполняется следующим образом:
from keras.models import load_model
import json
import numpy as np
model = load_model('model.h5')
# Экспорт структуры модели
model_json = model.to_json()
with open('model.json', 'w') as json_file:
json_file.write(model_json)
# Экспорт весов
model.save_weights('model_weights.bin', format='bin')
После этого файлы model.json и
model_weights.bin становятся доступными для загрузки в
Node.js.
В Node.js модель загружается следующим образом:
const model = new KerasJS.Model({
filepaths: {
model: 'path/to/model.json',
weights: 'path/to/model_weights.bin'
},
gpu: false
});
model.ready()
.then(() => console.log('Модель успешно загружена'))
.catch(err => console.error('Ошибка загрузки модели:', err));
Параметр gpu указывает, использовать ли WebGL ускорение
(при работе в браузере) или нет. В Node.js обычно используется
false.
В Keras.js входные данные передаются в виде объектов, где ключ — это
имя входного слоя модели, а значение — тензор в формате
Float32Array. Например, если входной слой называется
input_1:
const inputData = {
input_1: new Float32Array([0.5, 0.2, 0.1, 0.7])
};
model.predict(inputData)
.then(outputData => {
console.log('Результат предсказания:', outputData);
})
.catch(err => console.error('Ошибка предсказания:', err));
Форма массива должна совпадать с ожидаемой моделью. Для многомерных
входов используется Float32Array соответствующей длины, с
учетом flatten или reshaping, если требуется.
Node.js позволяет работать с файловой системой через встроенный
модуль fs. Для сохранения результатов предсказаний
достаточно преобразовать выходные данные в удобный формат, например JSON
или CSV:
const fs = require('fs');
model.predict(inputData)
.then(outputData => {
// Преобразование данных в JSON
const jsonData = JSON.stringify(outputData, null, 2);
// Сохранение в файл
fs.writeFileSync('prediction_output.json', jsonData);
})
.catch(err => console.error('Ошибка при сохранении предсказаний:', err));
Для CSV можно использовать пакет csv-writer:
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const csvWriter = createCsvWriter({
path: 'prediction_output.csv',
header: Object.keys(outputData).map(key => ({id: key, title: key}))
});
const records = Object.keys(outputData)[0] ? Object.keys(outputData).map(key => ({[key]: outputData[key]})) : [];
csvWriter.writeRecords(records)
.then(() => console.log('CSV файл успешно сохранен'));
При работе с моделями большого размера следует учитывать несколько особенностей:
fs.createReadStream) для чтения бинарных данных.const buffer = fs.readFileSync('model_weights.bin');
model.weights = buffer;
Для детальной диагностики загрузки и предсказаний используется:
model.ready()
.then(() => console.log('Модель загружена'))
.catch(err => console.error('Ошибка при загрузке модели:', err));
model.predict(inputData)
.then(output => console.log('Предсказание:', output))
.catch(err => console.error('Ошибка предсказания:', err));
Дополнительно можно включить логирование шагов внутри модели, если требуется проследить за промежуточными активациями, путем модификации исходного JSON модели и добавления слоев вывода для внутренних состояний.
Float32Array. Использование других типов данных значительно
снижает скорость.predict, чтобы минимизировать накладные расходы на вызовы
функции.keras-js через npm и подключение в коде.model.ready().Float32Array.model.predict().Эта последовательность обеспечивает эффективное применение Keras.js в серверных приложениях Node.js, позволяя интегрировать предобученные модели в полноценные рабочие процессы.