Шаг 44.
Глубокое обучение на Python. Математические основы нейронных сетей. Шестеренки нейронных сетей: операции с тензорами. Изменение формы тензора

    На этом шаге мы перечислим операции, меняющие форму тензора.

    Третий вид операций с тензорами, который мы должны рассмотреть, - это изменение формы тензора. Данная операция не применяется в слоях Dense нашей нейронной сети, но мы использовали ее, когда готовили исходные данные для передачи в модель:

train_images = train_images.reshape((60000, 28 * 28))

    Изменение формы тензора предполагает такое переупорядочение строк и столбцов, чтобы привести его форму к заданной. Разумеется, тензор новой формы имеет такое же количество элементов, что и исходный. Чтобы было понятнее, рассмотрим несколько простых примеров:

>>> x = np.array([[0., 1.],
                  [2., 3.],
                  [4., 5.]])
>>> x.shape (3, 2)
>>> x = x.reshape((6, 1))
>>> x
array([[ 0.],
       [ 1.],
       [ 2.],
       [ 3.],
       [ 4.],
       [ 5.]])
>>> x = x.reshape((2, 3))
>>> x
array([[ 0., 1., 2.],
       [ 3., 4., 5.]])

    Особый случай изменения формы, который часто встречается в практике, - это транспонирование. Транспонирование - это такое преобразование матрицы, когда строки становятся столбцами, а столбцы - строками; то есть x[i, :] превращается в x[:, i]:

>>> x = np.zeros((300, 20)) # Создаст матрицу с формой (300, 20), заполненную нулями
>>> x = np.transpose(x)	
>>> print(x.shape)	
(20, 300)

    На следующем шаге мы рассмотрим геометрическую интерпретацию операций с тензорами.




Предыдущий шаг Содержание Следующий шаг