Основные понятия тензоров

Глубокое обучение

Предисловие

Базовая структура данных всех современных систем машинного обучения использует тензоры, что свидетельствует о ее важности для области глубокого обучения. Давайте представим это подробно.

Подобно спискам и кортежам, тензоры являются контейнерами данных, но почти все они представляют собой числовые данные. Его можно разделить на тензоры различной структуры в соответствии с разными размерностями. Проиллюстрируем это.

Скаляр

Скаляр — это тензор, содержащий только одно значение.

ex: 1 , 2 , 3 …

Он также называется тензором нулевого порядка , тензором нулевой оси или 0D-тензором . float32 или float64 — это своего рода скалярный тензор. Ниже введите атрибут, чтобы проверить, сколько осей имеет тензор.

import numpy as np
x = np.array(20)    //use number 20 to build a tensor (numpy array)
x.ndim 

Результатом этого кода является 0. Это означает, что ось (порядок) равна 0. Следовательно, вы можете понять, что тензор оси 0 равен скалярному тензору и тензору 0-го порядка. Вы можете импортировать numpy и использовать его метод array() для создания массива numpy.

Вектор

Вектор состоит из группы чисел и представляет собой массив.

ex: [x,y] , [x,y,z] …

Он называется тензором первого порядка , одноосным тензором или одномерным тензором, потому что это только одна ось. Давайте создадим вектор Numpy (1D тензор)

x = np.array([8,14,17,21,32,14])   //use array() method to create a six dimensional 1D tensor
x.ndim

Результат равен 1. Важно отметить, что этот вектор состоит из 6 элементов. Поэтому мы можем назвать это шестимерным одномерным тензором.

1D тензор: D означает, сколько осей.

Матрица

Матрица состоит из группы векторов и представляет собой массив.

Его также называют тензором второго порядка, двухосным тензором или двумерным тензором. Матрицаимеет 2 оси. Одна ось называется строкой, а другая — столбцом. Давайте создадим матрицу Numpy

x = np.array([[1,2,3,4,5],            //use array() to create 2D tensor 4*5(dimensional) 
              [6,7,8,9,10],
              [11,12,13,14,15],
              [16,17,18,19,20]])
x.ndim

Результат приведенного выше кода равен 2. В приведенной выше матрице [1,2,3,4,5] — это строка 0 числа x, [1,6,11,16] — столбец 0 числа x.

Более высокого порядка

Это относится к трехмерным тензорам или тензорам более высокого порядка. В следующем примере в качестве примера используется тензор третьего порядка. Давайте сначала посмотрим на график трехмерного тензора.

Вы можете представить его в виде трехмерного куба. Тензоры более высокого порядка не могут быть визуализированы людьми графически.

x = np.array([[[4,12,5,6,13],
               [6,8,46,51,42],
               [7,81,12,17,19]],
              [[1,3,5,7,82],
               [17,44,45,47,82],
               [0,23,4,56,98]]
              [[4,5,6,78,74],
               [77,88,99,11,22],
               [49,51,53,55,57]])
x.ndim

Результат приведенного выше кода равен 3. Трехмерный тензор состоит из группы матриц, которые должны быть массивом. И так далее и тому подобное, помещение нескольких трехмерных тензоров в массив становится четырехмерным тензором.

Характеристики

Тензоры определяются тремя ключевыми свойствами в глубоком обучении.

  1. число осей: это число осей, упомянутое в приведенном выше примере, вы можете использовать ndim, например, метрика равна 2.
  2. shape : используется для описания количества измерений каждой оси в тензоре . В программе кортеж, состоящий из целых чисел, используется для представления структуры данных тензора. Например, форма вектора (x), форма матрицы (x, y), форма трехмерного тензора (x, y, z), а форма скаляра представлена к ().
  3. тип данных (называемый dtype в Python): это относится к типу данных в тензоре, например, float32, uint8, float64 и т. д. Существуют также другие строковые типы. тензоры.

количество осей =›

x = np.array([8,14,17,32])
x.ndim

результат :

1

форма =›

x = np.array([[8,14,17,32],
              [12,41,13,5]])
x.shape

результат :

(4,2)

тип данных =›

x = np.array(20)
x.dtype

результат:

dtype('float32')

Применение тензора в глубоком обучении

Итак, где мы можем использовать тензоры в глубоком обучении?

Двухмерный тензор (вектор): его форма (образцы, признаки). Каждая выборка представляет собой вектор числовых признаков.

Данные временного ряда или последовательные данные: здесь используется трехмерный тензор, и его форма (выборки, временные шаги, функции). Каждая выборка представляет собой последовательность нескольких векторов признаков с длиной временных шагов.

Изображение. Здесь используется 4D-тензор, и его форма (выборки, высота, ширина, каналы) или (выборки, каналы, высота, ширина). Каждый образец представляет собой двумерную сетку (высота * ширина) пикселей, и каждый пиксель выражается в виде вектора, длина которого равна каналам.

Видео: использование 5D-тензора, и его форма (выборки, кадры, высота, ширина, каналы). Каждый образец представляет собой последовательность изображений с длиной кадров.

Спасибо за ваше чтение .🥴