Keras.js представляет собой библиотеку, которая позволяет запускать модели, обученные в Keras (Python), прямо в браузере с использованием JavaScript. Одним из ключевых применений является извлечение признаков из изображений, аудио или текстовых данных без необходимости повторного обучения модели.
В Keras.js модели загружаются в формате JSON вместе с весами в бинарном виде. Для извлечения признаков используется подход forward pass: входные данные пропускаются через слои модели до заданного уровня, после чего активизации этого слоя рассматриваются как признаки.
Float32Array.
Изображения нужно нормализовать (например, делением на 255), а текстовые
данные — преобразовать в последовательности чисел с помощью
токенизации.import KerasJS from 'keras-js';
const model = new KerasJS.Model({
filepaths: {
model: 'model.json',
weights: 'model_weights.buf',
metadata: 'model_metadata.json'
},
gpu: true
});
await model.ready();
Использование флага gpu: true позволяет ускорить
вычисления через WebGL.
Для извлечения признаков создается объект с входными данными и указанием слоя, активизацию которого нужно получить:
const inputData = new Float32Array([/* нормализованные данные */]);
const output = await model.predict({ input_1: inputData });
input_1 соответствует имени входного слоя
модели.output — объект, где ключи соответствуют
именам выходных слоев. Для извлечения признаков выбирается нужный слой,
например dense_2.Для получения признаков из промежуточных слоев требуется изменить модель на этапе экспорта из Keras, чтобы промежуточные слои были доступны как выходные:
from keras.models import Model
base_model = load_model('original_model.h5')
feature_layer = base_model.get_layer('dense_2').output
feature_extractor = Model(inputs=base_model.input, outputs=feature_layer)
feature_extractor.save('feature_model.h5')
После этого модель можно конвертировать в формат, совместимый с Keras.js:
kerasjs-convert feature_model.h5
model.predict
возвращает промис, что обеспечивает неблокирующее выполнение и
возможность параллельной загрузки данных.model.metadata помогает уточнить размеры).Извлечение признаков с помощью Keras.js превращает браузер в мощный инструмент для анализа данных без необходимости серверных вычислений, позволяя применять предобученные модели в реальном времени для визуализации, кластеризации и передачи признаков в другие алгоритмы.