TensorFlow.js предоставляет набор функций для генерации
специальных тензоров, которые часто используются при
инициализации данных, создании масок, построении диагональных матриц и
заполнении массивов повторяющимися значениями. Основные функции для
таких операций — tf.zeros, tf.ones,
tf.eye и tf.fill. Каждая из них создает тензор
определенного вида и поддерживает гибкую настройку размеров и типов
данных.
Функция tf.zeros создает тензор, полностью заполненный
нулями. Это особенно полезно при инициализации весов или при создании
пустых массивов для последующих вычислений.
Синтаксис:
tf.zeros(shape, dtype?)
[2, 3] создаст матрицу 2x3.float32. Допустимые значения:
float32, int32, bool,
complex64, string.Пример:
const zerosMatrix = tf.zeros([2, 3]);
zerosMatrix.print();
// [[0, 0, 0],
// [0, 0, 0]]
Особенность tf.zeros в том, что создаваемый тензор
ленивый, то есть вычисления выполняются эффективно и
без лишнего расхода памяти, если тензор используется в дальнейшем в
графе операций.
Функция tf.ones аналогична tf.zeros, но
заполняет тензор единицами. Применяется для создания масок, единичных
матриц или для операций нормализации.
Синтаксис:
tf.ones(shape, dtype?)
Пример:
const onesVec tor = tf.ones([5]);
onesVector.print();
// [1, 1, 1, 1, 1]
Можно комбинировать с арифметическими операциями:
const scaledOnes = tf.ones([2, 2]).mul(3);
scaledOnes.print();
// [[3, 3],
// [3, 3]]
Функция tf.eye используется для создания
единичной (диагональной) матрицы, где элементы главной
диагонали равны 1, а остальные — 0. Полезна при работе с линейной
алгеброй, решении систем уравнений, а также при инициализации весов в
нейронных сетях.
Синтаксис:
tf.eye(numRows, numColumns?, batchShape?, dtype?)
numRows).Пример:
const identityMatrix = tf.eye(3);
identityMatrix.print();
// [[1, 0, 0],
// [0, 1, 0],
// [0, 0, 1]]
Создание батчей единичных матриц:
const batchedEye = tf.eye(2, 2, [3]);
batchedEye.print();
// [[[1, 0],
// [0, 1]],
// [[1, 0],
// [0, 1]],
// [[1, 0],
// [0, 1]]]
Функция tf.fill позволяет создавать тензоры произвольной
формы, заполненные одним конкретным значением. Это
универсальный инструмент, когда требуется тензор с одинаковыми
элементами, отличными от 0 или 1.
Синтаксис:
tf.fill(shape, value, dtype?)
Пример:
const filledTensor = tf.fill([2, 3], 7);
filledTensor.print();
// [[7, 7, 7],
// [7, 7, 7]]
tf.fill особенно полезен для создания масок или весовых
матриц с постоянными значениями, например:
const mask = tf.fill([4, 4], true);
mask.print();
// [[true, true, true, true],
// [true, true, true, true],
// [true, true, true, true],
// [true, true, true, true]]
add,
matMul, reshape и другие.Эти четыре функции составляют фундаментальный набор для создания
структурированных данных в TensorFlow.js и позволяют строить сложные
вычислительные графы с минимальными затратами кода и памяти. Они часто
применяются совместно с функциями для генерации случайных чисел
(tf.randomNormal, tf.randomUniform) и
трансформаций (reshape, concat,
stack).