Тензоры - это структурные единицы, из которых строятся модели нейросетей. Это могут быть одиночные числа, векторы, матрицы и их обобщения на более высокие измерения. В библиотеке глубокого обучения TensorFlow (псевдоним tf) они представлены объектом tf.Tensor.
Тензор характеризуется типом данных (например, string, float32, int32) и размером (shape). Все элементы тензора имеют один тип данных, и он всегда известен. В то же время размеры не всегда детерминированы и в этих случаях могут быть получены только во время исполнения.
Основные виды тензоров следующие:
Адресация
Происходит путем последовательного задания в квадратных скобках индексов или их групп по заданным измерениям. Создадим тензор размерности два и получим элемент во второй строке и втором столбце, а также тензор из всего второго столбца:
Получение ранга
Рангом объекта tf.Tensor является количество его измерений (0 - скаляр, 1 - вектор, 2 - матрица, 3 - куб ...). Для получения ранга существует специальная функция tf.rank:
Получение размеров
Размеры показывают количество элементов в каждом измерении. Для получения размеров на этапе создания тензора можно обратиться к свойству shape. Однако они могут быть лишь частично определены и, соответственно, для внесения большей ясности потребуется вызвать функцию tf.shape на этапе выполнения:
Изменение размеров
Количество элементов тензора - это произведение всех его измерений. Заданное количество элементов можно разместить в тензорах разных форм. Для этого предназначена функция tf.reshape:
Изменение типа
Как указывалось выше, любой тензор характеризуется типом данных, присущим всем его элементам. Однако с помощью функции tf.cast его можно менять: