Keras.js — это библиотека, позволяющая запускать модели, обученные в Keras (Python), непосредственно в браузере с использованием JavaScript. Работа с типами данных является фундаментальной частью взаимодействия с моделями, поскольку неправильный тип может привести к некорректной обработке данных или к снижению производительности.
В Keras.js данные представлены с использованием Typed Arrays, что обеспечивает эффективность работы с массивами чисел и совместимость с WebGL при вычислениях на GPU.
float32
Представляет числа с плавающей точкой одинарной точности.
Наиболее часто используемый тип для входов и весов нейронных сетей.
Подходит для операций с CNN, RNN, Dense-слоями.
В JavaScript соответствует Float32Array.
Пример создания массива:
const input = new Float32Array([0.1, 0.5, -0.3]);int32
Целые числа со знаком, 32-битная точность.
Используется для категориальных меток или индексов в эмбеддингах.
В Keras.js применяется в слоях, где важно целочисленное
представление (например, Embedding,
SparseCategoricalCrossentropy).
Соответствует Int32Array в JavaScript.
const labels = new Int32Array([0, 2, 1, 3]);bool
Логические значения true или
false.
Используется для масок или бинарных индикаторов.
В Typed Arrays JavaScript нет отдельного типа
BoolArray, поэтому обычно применяют Uint8Array
с 0/1.
const mask = new Uint8Array([1, 0, 1, 0]);При передаче данных в Keras.js необходимо строго соответствовать типу, который ожидает модель. Для преобразования между типами используется стандартная конструкция Typed Arrays:
const floatArray = new Float32Array(intArray); // int32 -> float32
const intArray = new Int32Array(floatArray); // float32 -> int32
Важно помнить, что преобразование float32 →
int32 может привести к потере дробной части, а
преобразование int32 → float32 сохраняет
точность до 24 бит значащих цифр.
Использование правильного типа данных критично для производительности:
float32.int32.bool или
Uint8Array.Uint8Array/Uint16Array) для экономии
памяти.import KerasJS from 'keras-js';
// Инициализация модели
const model = new KerasJS.Model({
filepath: 'model.bin',
gpu: true
});
// Создание входного массива float32
const inputData = new Float32Array([0.2, -0.1, 0.5, 0.7]);
// Передача данных в модель
model.ready().then(() => {
const input = { input_1: inputData };
return model.predict(input);
}).then(output => {
console.log(output.output_1);
});
В этом примере входные данные созданы в формате float32,
который полностью совместим с моделью и обеспечивает быструю обработку
через WebGL.
Правильный выбор типа данных напрямую влияет на точность
вычислений, потребление памяти и
скорость работы модели. В Keras.js оптимальная работа
достигается сочетанием float32 для чисел с плавающей
точкой, int32 для категориальных меток и
Uint8Array для бинарных масок. Любое отклонение от
рекомендуемых типов может вызвать ошибки или падение производительности,
особенно при работе с большими моделями.