В TensorFlow.js центральной структурой данных является тензор — многомерный массив чисел. Тензоры классифицируются по рангу:
[высота, ширина, каналы].Создание тензоров осуществляется с помощью функций
tf.tensor(), tf.tensor1d(),
tf.tensor2d() и аналогичных. Примеры:
const scalar = tf.scalar(5);
const vector = tf.tensor1d([1, 2, 3]);
const matrix = tf.tensor2d([[1, 2], [3, 4]]);
Каждый тензор имеет форму (shape) и тип
данных (dtype), которые можно получить через свойства
shape и dtype.
console.log(matrix.shape); // [2, 2]
console.log(matrix.dtype); // 'float32'
TensorFlow.js предоставляет широкий набор операций, позволяющих манипулировать данными и выполнять вычисления:
tf.add(), tf.sub(),
tf.mul(), tf.div() или оператором
tensor.add(), tensor.mul() для метода
объекта.const a = tf.tensor1d([1, 2, 3]);
const b = tf.tensor1d([4, 5, 6]);
const c = tf.add(a, b); // [5, 7, 9]
tf.matMul(a, b) для тензоров ранга 2.const x = tf.tensor2d([[1, 2], [3, 4]]);
const y = tf.tensor2d([[5, 6], [7, 8]]);
const z = tf.matMul(x, y);
// [[19, 22], [43, 50]]
reshape() изменяет форму
тензора без изменения данных.const t = tf.tensor1d([1, 2, 3, 4]);
const reshaped = t.reshape([2, 2]); // [[1, 2], [3, 4]]
tf.transpose()
меняет местами оси матрицы.const m = tf.tensor2d([[1, 2, 3], [4, 5, 6]]);
const transposed = tf.transpose(m); // [[1, 4], [2, 5], [3, 6]]
tf.concat()
объединяет тензоры по заданной оси, tf.slice() извлекает
подтензор.const t1 = tf.tensor2d([[1, 2]]);
const t2 = tf.tensor2d([[3, 4]]);
const combined = tf.concat([t1, t2], 0); // [[1, 2], [3, 4]]
TensorFlow.js включает методы для работы с линейной алгеброй:
tf.norm(vector, ord)
вычисляет L1, L2 или любую другую норму.tf.linalg.inv(matrix) возвращает обратную матрицу для
квадратной матрицы.tf.linalg.det(matrix)
вычисляет детерминант.tf.linalg.eig(matrix) для анализа спектра матриц.const m = tf.tensor2d([[2, 1], [1, 2]]);
const inv = tf.linalg.inv(m);
TensorFlow.js поддерживает побитовые, логические и тригонометрические операции, которые применяются к каждому элементу тензора:
tf.sin(tensor), tf.cos(tensor),
tf.exp(tensor), tf.log(tensor)const t = tf.tensor1d([0, Math.PI / 2, Math.PI]);
const sines = tf.sin(t); // [0, 1, 0]
tf.relu(), tf.sigmoid(),
tf.tanh() применяются к тензорам для нелинейной
трансформации.TensorFlow.js поддерживает бродкастинг, что позволяет выполнять арифметические операции с тензорами разной формы, если их размеры совместимы:
const mat = tf.tensor2d([[1, 2], [3, 4]]);
const vec = tf.tensor1d([10, 20]);
const result = mat.add(vec); // [[11, 22], [13, 24]]
TensorFlow.js использует управление памятью вручную
через tf.tidy() для автоматического удаления промежуточных
тензоров и предотвращения утечек памяти:
tf.tidy(() => {
const a = tf.tensor1d([1, 2, 3]);
const b = tf.tensor1d([4, 5, 6]);
const c = a.add(b);
c.print();
});
// a, b, c автоматически очищаются после выхода из tidy
tensor.dispose(),
особенно при работе с большими матрицами и изображениями.Эти концепции образуют фундамент для построения нейронных сетей, анализа данных и создания вычислительных графов в TensorFlow.js.