Тензор — это базовая структура данных в TensorFlow.js, представляющая
собой многомерный массив чисел. Каждый тензор характеризуется
формой (shape) и типом данных (dtype).
Тип данных может быть float32, int32,
bool или complex64. Форма тензора задаётся
массивом чисел, определяющим количество элементов в каждом
измерении.
В TensorFlow.js создаются тензоры с помощью различных функций:
tf.tensor, tf.scalar,
tf.tensor1d, tf.tensor2d. Каждая из них имеет
свои особенности и область применения.
tf.tensor — универсальная функция для создания тензоров
любой размерности. Она принимает на вход массив данных и опционально
форму и тип данных.
Синтаксис:
tf.tensor(values, shape?, dtype?)
values — массив чисел или вложенных массивов.shape — массив чисел, задающий форму тензора.dtype — тип данных (по умолчанию
float32).Пример:
const t = tf.tensor([[1, 2], [3, 4]], [2, 2], 'int32');
console.log(t.shape); // [2, 2]
console.log(t.dtype); // int32
Ключевой момент: если форма не указана, TensorFlow.js автоматически определяет её по структуре вложенных массивов. Это удобно для простых случаев, но явное указание формы повышает читаемость и предотвращает ошибки при многомерных данных.
tf.scalar создаёт тензор с нулевым
измерением — по сути, одиночное число. Он используется для
представления констант или скаляров, например, коэффициентов в нейронных
сетях.
Синтаксис:
tf.scalar(value, dtype?)
value — одно число.dtype — тип данных.Пример:
const s = tf.scalar(3.14);
console.log(s.shape); // []
console.log(s.dtype); // float32
Скаляр может быть использован в математических операциях с тензорами любой размерности благодаря broadcasting: значение автоматически расширяется до формы другого тензора.
tf.tensor1d создаёт одномерный тензор, то есть вектор.
Это упрощённая версия tf.tensor для одномерных данных.
Синтаксис:
tf.tensor1d(values, dtype?)
values — массив чисел.dtype — тип данных.Пример:
const v = tf.tensor1d([1, 2, 3, 4]);
console.log(v.shape); // [4]
console.log(v.dtype); // float32
Одномерные тензоры широко применяются для хранения входных данных, весов модели или результатов вычислений, когда не требуется многомерная структура.
tf.tensor2d создаёт двумерный тензор, аналог матрицы.
Для её создания нужно передать данные в виде вложенного массива и
указать форму [rows, columns].
Синтаксис:
tf.tensor2d(values, shape?, dtype?)
values — массив массивов или плоский массив.shape — [число_строк, число_столбцов].
Если не указано, вычисляется автоматически.dtype — тип данных.Пример:
const m = tf.tensor2d([[1, 2, 3], [4, 5, 6]]);
console.log(m.shape); // [2, 3]
console.log(m.dtype); // float32
Особенность tf.tensor2d в том, что она строго требует
двумерную структуру, в отличие от tf.tensor, которая может
создавать тензоры любой размерности. Это делает tf.tensor2d
удобной для работы с матрицами весов или батчами данных.
Автоматическое определение формы: При
использовании tf.tensor форма может быть вычислена
автоматически. Для tf.tensor1d и tf.tensor2d
форма задаётся более строго, что помогает избежать ошибок при обработке
данных.
Типы данных: По умолчанию создаются тензоры типа
float32. Для целочисленных операций и булевых значений
рекомендуется явно указывать dtype, чтобы избежать
неожиданных преобразований.
Broadcasting: Скалярные и одномерные тензоры могут автоматически расширяться до формы многомерных тензоров в арифметических операциях. Это упрощает вычисления и позволяет писать компактный код.
Память и производительность: TensorFlow.js использует WebGL для ускорения операций с тензорами. Создание тензоров с правильной формой и типом данных снижает нагрузку на графический процессор и ускоряет обучение моделей.
const a = tf.scalar(2);
const b = tf.tensor1d([1, 2, 3]);
const c = tf.tensor2d([[1, 2], [3, 4]]);
// Broadcasting скаляра к вектору
const sum = b.add(a); // [3, 4, 5]
// Умножение матрицы на скаляр
const scaled = c.mul(a); // [[2, 4], [6, 8]]
Использование разных типов тензоров совместно позволяет строить гибкие вычислительные графы и эффективно управлять данными на всех этапах работы модели.
Хотя tf.tensor является универсальным инструментом,
специализированные функции tf.scalar,
tf.tensor1d и tf.tensor2d повышают
читаемость кода, делают его более безопасным и
оптимизированным для конкретных структур данных.