Тензор в контексте вычислений является фундаментальной структурой данных, представляющей многомерный массив чисел. В JavaScript и в библиотеке Keras.js тензор выступает универсальным контейнером для хранения данных любой размерности: от скаляров и векторов до многомерных массивов, необходимых для работы нейронных сетей.
Скаляр (0-мерный тензор) Представляет собой одно число. В Keras.js скаляры используются для хранения параметров модели, например, весов или смещений (bias) нейронов.
Вектор (1-мерный тензор) Одномерный массив
чисел, например [1, 2, 3]. Часто применяется для
представления входных признаков или выходных классов в задачах
классификации.
Матрица (2-мерный тензор) Таблица чисел с
размерностью rows × columns. В Keras.js матрицы
используются для представления слоев нейронных сетей, где каждая строка
может быть отдельным примером, а столбцы — признаками.
Многомерные тензоры (n-мерные) Применяются для
сложных данных: изображений, видео или последовательностей. Например,
тензор размерности [batch_size, height, width, channels]
хранит пакеты изображений RGB.
Keras.js предоставляет набор операций для работы с тензорами, которые аналогичны тем, что встречаются в Python-версии Keras:
reshape): позволяет преобразовывать тензоры между
различными размерностями без изменения данных.sum,
mean): позволяет агрегировать данные по заданным
измерениям, что часто используется при вычислении функции потерь.concat,
split): объединение нескольких тензоров или разбиение на
части для обработки батчей данных.Пример изменения формы тензора:
const inputTensor = new KerasJS.Tensor([1, 2, 3, 4, 5, 6], [2, 3]);
const reshapedTensor = inputTensor.reshape([3, 2]);
Каждый слой нейронной сети в Keras.js оперирует тензорами:
Использование тензоров обеспечивает:
Float32Array, что обеспечивает точность вычислений и
совместимость с WebGL.Создание тензора из массива и применение матричного умножения:
const a = new KerasJS.Tensor([1, 2, 3, 4], [2, 2]);
const b = new KerasJS.Tensor([5, 6, 7, 8], [2, 2]);
const c = a.dot(b);
console.log(c.data); // Результат матричного умножения
В этом примере dot выполняет классическое матричное
умножение, превращая два 2×2 тензора в новый 2×2 тензор, что
иллюстрирует типичное преобразование данных между слоями нейронной
сети.
Тензоры являются сердцем всех вычислений в Keras.js, обеспечивая гибкую и эффективную работу с данными любой размерности, а также позволяя интегрировать нейронные сети непосредственно в веб-среду с поддержкой ускорения через GPU.