Сегодня рассмотрим, что такое тензоры, зачем они нужны в Machine Learning и как Python-библиотека NumPy помогает создавать их. Читайте в нашей статье про ранги тензоров и другие атрибуты этой структуры данных в Python.
Что такое тензоры и при чем тут Data Science
Числа — основа вычислений компьютера, и более того средство конечного отображения любых данных: от художественного текста до графики и видео. Методы Data Science и Machine Learning тоже трансформируют информацию в числовую форму, чтобы работать с ней. Такими наборами чисел являются тензоры – в Python-библиотеке NumPy структуры данных в виде массивов, т.е. array [1].Тензоры имеют следующие атрибуты:
- ранг – количество осей. В двумерном тензоре ранг равен 2, трехмерный — 3 и т.д.
- форма, определяющая количество элементов на каждой из осей;
- тип данных – int32, float32 и другие числовые типы.
Прежде чем начать работу с тензорами в библиотеке numpy, ее нужно импортировать. Для обращения к ней будем использовать символы np
:
import numpy as np
У массивов numpy есть атрибут ndim
— ранг и shape — форма. Далее разберем на практических примерах, как с ними работать.
Скаляры и векторы в numpy
Тензор нулевого ранга или скаляр – это обычное число. В numpy он создается очень просто:
>>> a = np.array(10) >>> a array(10)
Ранг у него нулевой:
>>> a.ndim 0
И форма у него отсутствует:
>>> a.shape ()
Тензор первого ранга или вектор – это массив скаляров, который создается следующим образом:
>>> a = np.array([1, 2, 3, 4, 5]) >>> a array([1, 2, 3, 4, 5])
Ранг у него 1-й:
>>> a.ndim 1
Форма у вектора соответствует количеству элементов:
>>> a.shape (5,)
Тензоры 2-го ранга и выше в numpy
Тензор второго ранга или матрица представляет собой это массив векторов. В numpy он создается так:
>>> a = np.array([[1, 2, 13, 14], [5, 6, 17, 18], [9, 3, 11, 12]]) >>> a array([[ 1, 2, 13, 14], [ 5, 6, 17, 18], [ 9, 3, 11, 12]])
Ранг у него 2-й:
>>> a.ndim 2
Форма у матрицы соответствует количеству строк и столбцов (3 строки и 4 столбца):
>>> a.shape (3, 4)
Тензор третьего ранга — это массив матриц без отдельного наименования. В numpy он создается следующим образом:
>>> a = np.array([[[10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21]], [[22, 23, 24, 25], [26, 27, 28, 29], [30, 31, 32, 33]], [[34, 35, 36, 37], [38, 39, 40, 41], [42, 43, 44, 45]]]) >>> a array([[[10, 11, 12, 13], [14, 15, 16, 17], [18, 19, 20, 21]], [[22, 23, 24, 25], [26, 27, 28, 29], [30, 31, 32, 33]], [[34, 35, 36, 37], [38, 39, 40, 41], [42, 43, 44, 45]]])
Ранг у него 3-й:
>>> a.ndim 3
Форма у тензора соответствует количеству матриц (3), числу строк (3) и столбцов (4) в каждой из них:
>>> a.shape (3, 3, 4)
Тензор четвертого ранга — это массив тензоров третьего ранга, тензор пятого ранга — это массив тензоров четвертого ранга и т.д. Например, изображения можно закодировать как тензор 4-го ранга, а видео – как тензор 5-го ранга.
Где используются тензоры: применение в Data Science
Как мы уже отметили выше, тензоры позволяют представить изначально не числовую информацию в числовой форме. Например, изображение в оттенках серого представляется как матрица пикселей, где элемент равный 0 соответствует белому цвету, а 255 — черному, остальные являются переходными между белым и черным.
Совокупность таких изображений составляют образцы (samples). Тогда форма тензора с этими изображениями будет иметь вид: (образцы, высота, ширина)
У цветных изображений 3 канала цвета, поэтому его форма включает еще цвет: (образцы, цвет, высота, ширина).
Тексты можно представить виде матрицы, где предложение – это строка, а элемент в ней – закодированное слово. Видео – это совокупность изображений в каждом кадре, поэтому к форме тензора добавится атрибут в виде кадра.
В следующей статье мы продолжим разговор про тензоры в Data Science и Machine Learning и рассмотрим, как в Python можно управлять ими, извлекая из них нужные компоненты. Еще больше технических подробностей о работе с тензорами и представлением данных для Machine Learning, вы узнаете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.