Keras.js — это JavaScript-библиотека, позволяющая выполнять предобученные модели Keras непосредственно в браузере или на Node.js, используя WebGL для ускорения вычислений. Основой работы с ней являются тензоры — структуры данных, которые представляют скаляры, векторы, матрицы и более сложные многомерные массивы.
Скаляры — это тензоры нулевой размерности. Они
представляют собой одно единственное значение. В Keras.js скаляры
создаются с использованием объекта Float32Array или
простого числа при передаче данных в модель.
Пример создания скаляра:
const scalar = new Float32Array([42]);
console.log(scalar); // Float32Array [42]
Скаляры обычно используются для передачи единичных параметров или меток классов в задаче классификации.
Векторы — это одномерные тензоры. Они имеют
размерность shape = [n], где n — число
элементов в векторе. Векторы в Keras.js создаются аналогично скалярам,
но с большим количеством элементов.
Пример создания вектора:
const vector = new Float32Array([1.0, 2.0, 3.0, 4.0]);
console.log(vector); // Float32Array [1, 2, 3, 4]
Векторы используются для представления входных данных, таких как признаки объекта, или для вывода модели, например вероятностей классов.
Матрицы — двумерные тензоры с размерностью
shape = [rows, cols]. В Keras.js матрицы создаются путем
передачи плоского массива и указания размерности в
shape.
Пример создания матрицы:
const rows = 2;
const cols = 3;
const matrix = new Float32Array([
1, 2, 3,
4, 5, 6
]);
const shape = [rows, cols];
console.log({matrix, shape});
// matrix: Float32Array [1, 2, 3, 4, 5, 6]
// shape: [2, 3]
Матрицы часто применяются для представления батчей данных, где каждая строка — это отдельный объект с набором признаков.
Многомерные тензоры — это массивы с размерностью
больше двух, например,
shape = [batch, height, width, channels] для изображений. В
Keras.js они создаются аналогично матрицам, но с указанием полной
размерности.
Пример создания трехмерного тензора:
const depth = 2;
const height = 2;
const width = 3;
const tensor3D = new Float32Array([
1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12
]);
const shape3D = [depth, height, width];
console.log({tensor3D, shape3D});
// tensor3D: Float32Array [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
// shape3D: [2, 2, 3]
Многомерные массивы позволяют работать с изображениями, видео и временными рядами, передавая данные в формате, ожидаемом слоями нейронной сети.
Для загрузки и выполнения модели Keras в браузере используется объект
KerasJS.Model, который принимает тензоры в виде плоских
массивов и их формы:
const model = new KerasJS.Model({
filepath: 'model.bin',
gpu: true
});
const inputData = {
input_1: {
data: new Float32Array([1, 2, 3, 4]),
shape: [1, 4]
}
};
model.ready().then(() => {
return model.predict(inputData);
}).then(outputData => {
console.log(outputData);
});
Важно помнить, что данные всегда передаются в плоском
виде, а shape определяет реальную структуру
тензора. Это ключевой момент при работе с многомерными массивами:
внутреннее представление всегда одномерное, а форма задаёт интерпретацию
этих данных.
[n].[rows, cols].[d1, d2, ..., dn].shape.Float32Array обеспечивает совместимость с
WebGL и ускоряет вычисления.Создание корректной структуры тензоров — фундаментальный навык для эффективной работы с Keras.js и любого машинного обучения на клиентской стороне.