Тензор в TensorFlow.js представляет собой многомерный массив данных. Его свойства определяют структуру и тип хранимой информации. Основные характеристики тензора — ранг, форма и тип данных.
Ранг (rank) определяет количество измерений тензора. В терминах линейной алгебры это количество осей, по которым можно индексировать элементы массива:
tf.scalar(5). Не имеет осей, содержит одно значение.tf.tensor1d([1, 2, 3]). Имеет одну ось, индексируемую одним
числом.tf.tensor2d([[1, 2], [3, 4]]). Имеет две оси: строки и
столбцы.tf.tensor3d([[[1],[2]], [[3],[4]]]). Каждое
дополнительное измерение добавляет ось.Ранг играет ключевую роль при построении моделей машинного обучения. Например, входные данные нейронной сети должны иметь строго определённый ранг. Несоответствие ранга часто вызывает ошибки во время обучения.
Форма (shape) описывает размерность тензора по каждой оси. Она представляется в виде массива чисел, где каждый элемент — размер соответствующей оси:
const tensor = tf.tensor2d([[1, 2, 3], [4, 5, 6]]);
console.log(tensor.shape); // [2, 3]
[2] — количество строк.[3] — количество столбцов.Форма позволяет точно определить структуру данных, что важно для операций:
(m, n) * (n, p) = (m, p).reshape, сохраняя при этом данные:const reshaped = tensor.reshape([3, 2]);
console.log(reshaped.shape); // [3, 2]
Нельзя изменить форму тензора на массив с другим количеством элементов, это вызовет ошибку.
Тип данных (dtype) определяет, какой вид чисел хранится в тензоре. Основные типы:
float32 — числа с плавающей запятой, используется чаще
всего для нейросетей.int32 — целые числа 32-бит.bool — логические значения.complex64 — комплексные числа (редко используется в
базовой практике).Тип данных влияет на:
float32 и int32 без
приведения типов.float32
занимает больше памяти, чем int32, но обеспечивает большую
точность для вычислений с градиентами.const tensor = tf.tensor([1, 2, 3], undefined, 'int32');
console.log(tensor.dtype); // int32
Если тип данных не указан, TensorFlow.js выбирает тип автоматически, исходя из переданных значений.
const scalar = tf.scalar(42);
console.log(scalar.rank); // 0
console.log(scalar.shape); // []
const matrix = tf.tensor2d([[1, 2], [3, 4]]);
console.log(matrix.rank); // 2
console.log(matrix.shape); // [2, 2]
const tensor3 = tf.tensor3d([[[1],[2]], [[3],[4]]]);
console.log(tensor3.rank); // 3
console.log(tensor3.shape); // [2, 2, 1]
const t = tf.tensor2d([[1,2,3],[4,5,6]]);
const reshaped = t.reshape([3,2]);
console.log(reshaped.shape); // [3,2]
Эти три свойства составляют основу работы с тензорами и определяют структуру и поведение данных в вычислениях. Понимание их взаимосвязи критично для построения эффективных моделей машинного обучения и точных вычислений.