Keras.js — это библиотека для запуска предварительно обученных моделей Keras напрямую в браузере с использованием JavaScript. Она обеспечивает возможность выполнения моделей без серверной стороны, полностью на стороне клиента, используя WebGL для ускорения вычислений на графическом процессоре. Основные преимущества включают переносимость, отсутствие необходимости в установке Python и возможность интерактивной визуализации результатов.
Для работы с моделью Keras.js необходимо сначала загрузить
сериализованные файлы модели. Модель сохраняется в формате
JSON, а веса — в бинарном формате. Пример
инициализации:
const KerasJS = require('keras-js');
const model = new KerasJS.Model({
filepath: 'model/model.json',
gpu: true
});
model.ready().then(() => {
console.log('Модель загружена и готова к использованию');
});
Ключевые моменты:
gpu: true позволяет использовать WebGL для ускорения
вычислений.filepath указывает путь к JSON-файлу модели, созданной
в Keras на Python.ready() возвращает промис, который сигнализирует
о полной готовности модели к инференсу.Keras.js работает с входными данными в виде объектов
Float32Array. Каждое поле объекта должно соответствовать
имени входного тензора в модели:
const inputData = {
input_1: new Float32Array([0.5, 0.2, 0.1, 0.7])
};
model.predict(inputData).then(outputData => {
console.log(outputData);
});
Особенности:
float32).Модели, имеющие несколько входов и выходов, требуют передачи данных в виде объекта:
const multiInputData = {
input_1: new Float32Array([0.1, 0.2]),
input_2: new Float32Array([0.5, 0.7])
};
model.predict(multiInputData).then(multiOutputData => {
console.log(multiOutputData.output_1);
console.log(multiOutputData.output_2);
});
Каждый ключ объекта должен совпадать с именем соответствующего входа или выхода модели. Это обеспечивает корректное сопоставление данных с архитектурой модели.
Генеративно-состязательные сети (GAN) состоят из двух нейросетей: генератора и дискриминатора, обучающихся в состязательном режиме. Генератор создаёт новые данные, дискриминатор оценивает их подлинность, создавая механизм обратной связи.
Генератор преобразует случайный шум (обычно вектор латентного пространства) в данные, имитирующие распределение реальных образцов. В Keras.js можно загружать генератор аналогично любой модели:
const generator = new KerasJS.Model({
filepath: 'generator/model.json',
gpu: true
});
Важные моменты:
[batch_size, latent_dim].28x28x1).Дискриминатор классифицирует входные данные как реальные или сгенерированные:
const discriminator = new KerasJS.Model({
filepath: 'discriminator/model.json',
gpu: true
});
Особенности:
Для генератора можно использовать случайный латентный вектор:
const latentVector = {
input_1: new Float32Array(100).map(() => Math.random())
};
generator.predict(latentVector).then(fakeData => {
console.log('Сгенерированные данные:', fakeData);
});
Для дискриминатора данные подаются напрямую для оценки подлинности:
discriminator.predict({ input_1: fakeData.input_1 }).then(score => {
console.log('Вероятность подлинности:', score.output_1);
});
Keras.js хорошо интегрируется с HTML5 Canvas для
отображения изображений:
const canvas = document.getElementById('output');
const ctx = canvas.getContext('2d');
const imageData = new ImageData(28, 28);
for (let i = 0; i < 28*28; i++) {
const value = fakeData.output_1[i] * 255;
imageData.data[i * 4 + 0] = value;
imageData.data[i * 4 + 1] = value;
imageData.data[i * 4 + 2] = value;
imageData.data[i * 4 + 3] = 255;
}
ctx.putImageData(imageData, 0, 0);
Ключевые моменты:
[0,1].Uint8ClampedArray позволяет корректно
отображать данные на Canvas.Keras.js обеспечивает эффективную платформу для демонстрации работы GAN в интерактивных веб-приложениях, предоставляя возможность создавать визуальные эффекты, генерировать изображения и тестировать модели без серверной инфраструктуры.