Резюме: мне нравится учиться, играя с кодом и делясь своими знаниями через подобные блоги. Это краткое сообщение в блоге Введение в серию« Тензор », охватывающее тензорные операции, такие как поэлементные операции, арифметические операции, широковещательные тензоры, операции сравнения и редукции. операции. Чтобы увидеть больше подобных сообщений на тему Основы машинного обучения, подпишитесь на меня здесь или в Твиттере - Shaistha Fathima.

Вот ссылка на все статьи из серии «Введение в тензоры»:

Если интересно, вы также можете проверить другую серию статей на тему Основные концепции, которые вы должны знать, прежде чем начинать работу с« Нейронными сетями (NN)» »

Давай начнем…

Поэлементные операции

Это операции между двумя тензорами, соответствующими элементами. Итак, каковы соответствующие элементы?

Соответствующие элементы внутри тензора можно определить как два элемента, занимающих одну и ту же позицию в тензоре, где положение определяется индексами, используемыми для определения местоположения каждого элемента.

Пример:

#tensor element corresponding to the position at [0][0] respectively
t1[0][0] ----> tensor(1.)    # in tensor t1 --> 1.
t2[0][0] ----> tensor(2.)    # in tensor t2 --> 2.

Примечание. Поэлементные операции могут выполняться ТОЛЬКО с тензором ОДНОГО РАЗМЕРА или ФОРМЫ и является скалярным компонентом.

Арифметические операции

Я думаю, вы все знаете, что означают арифметические операции, то есть операции сложения, вычитания, умножения и деления.

Примеры:

Все вышесказанное следует данному правилу: «Поэлементные операции могут происходить ТОЛЬКО с ТЕНЗОРОМ ОДНОГО РАЗМЕРА или ФОРМЫ и являются скалярным компонентом».

Но что, если вы хотите выполнить определенную операцию со всем элементом сразу?

Пример:

В приведенном выше примере добавления 2 ко всем элементам тензора t1 можно увидеть, что ранг t1 = 2 и размер [2, 2], тогда как ранг просто числа 2 = 0, но все же, операция проводится и вроде все работает нормально! Это почему?

Это можно объяснить с помощью следующего раздела «Broadcasting Tensor», в котором объясняется, как как вышеупомянутых арифметических операций.

Трансляционный тензор

Широковещательная передача в тензорах в основном объясняет или описывает, как тензоры различной формы обрабатываются во время арифметических операций, чтобы элементы выполняли поэлементные операции.

Итак, в приведенных выше примерах, когда мы пишем t1 + 2, где скалярный тензор со знаком «2» добавляется к тензору t1 ранга 2, что согласно правилу невозможно!

Здесь нам на помощь приходит широковещательная передача, она подняла ранг или размерность скалярного значения «2» до тензора ранга 2, таким образом, следуя правилу! Это помогает выполнять арифметические операции.

Пример:

Но что насчет того, когда мы хотим добавить тензор формы [1, 2] к тензору формы [2, 2]?

Пример: Добавление тензора [2, 2] к тензору [1, 2]

Пример: Добавление тензора [2, 2] к тензору [2, 1]

Трансляция применяется ТОЛЬКО для тензоров РАЗНЫХ форм.

Рабочие шаги, которые происходят во время трансляции:

Проверка совместимости и правила:

Размеры совместимы, если:

- Оба равны друг другу (или)

- Одно из них - «1».

В противном случае трансляция невозможна!

Примечание. Проверка совместимости выполняется справа (R) налево (L)

Пример 1. Одинаковое «звание», разная форма

Шаг 1. Проверка совместимости размеров для «t1 + t2»

t1 = [1, 3] и t2 = [3, 1]

Сравнение начинается с R - ›L; см. поле 1, подчиняется правилу (Оба равны друг другу (или) Один из них равен '1'), поэтому он переместится в поле 2 и, следовательно, оба совместимый.

Шаг 2: окончательная форма тензора

Здесь результирующий тензор будет иметь форму [3, 3] как t1 = [1, 3] и t2 = [3, 1], беря максимальное значение измерения из каждого поля.

Шаг 3. Изменение формы обоих t1 и t2, т. е. широковещательная передача как t1, так и t2.

t1 = [[1, 2, 3],
      [1, 2, 3],
      [1, 2, 3]]
t2 = [[4, 4, 4],
      [5, 5, 5],
      [6, 6, 6]]

И результат будет,

Пример 2. Разное «звание», разная форма

Здесь также выполняются все три вышеуказанных шага, чтобы узнать, возможно ли вещание или нет.

Шаг 1: t1 = [1, 3] и t2 = [1, 1] (добавьте один для дополнительного измерения) - проходит! Итак, переходим к ..

Шаг 2: Окончательная форма тензора [1, 3] (беря максимальные размеры из каждого блока!)

Шаг 3: t2 = [[5, 5, 5]] после трансляции

Шаг 4: результат

Пример 3. Разные «звания», разные формы, НО НЕ совместимы! Итак, НЕТ трансляции! Следовательно, арифметические операции не могут быть выполнены.

почему так случилось? Если вы внимательно обратите внимание, вы увидите, что t1 = [2, 3] и t2 = [3, 3], поле 1 отмечено и проходит, поскольку оба равны '3', но когда дело доходит до поля 2 с '2' и «3», очевидно, что оба они не равны, поэтому рассмотрим второй вариант правила совместимости, который гласит, что «любой из них должен быть равен 1», что не выполняется!

Следовательно, поскольку размеры несовместимы, трансляция не может иметь место, поэтому в соответствии с правилами поэлементной работы тензоры с разными формами не могут пройти поэлементную операцию!

Операции сравнения

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

Пример использования функций

Редукционные операции

Операция приведения к тензору «уменьшает» количество элементов, содержащихся в тензоре. Дает возможность управлять нашими данными, как и другими операциями.

Это позволяет нам выполнять операции с элементами в рамках одного тензора.

Некоторые из примеров

Операция уменьшения тензора Argmax: возвращает положение индекса максимального значения внутри тензора.

Пример:

Заключение

Вот и все! Теперь вы знаете все необходимые базовые концепции тензоров PyTorch, чтобы начать работу с машинным обучением.

Как всегда, вы можете получить код здесь.

Вы также можете ознакомиться с официальной документацией здесь.

Вы также можете посмотреть мою другую серию статей о Основные концепции, которые вы должны знать, прежде чем начинать работу с« нейронными сетями (NN)», если вам интересно!