Больше тензорных операций в PyTorch

Прежде чем идти дальше, давайте импортируем необходимые библиотеки.

#importing the libraries
import numpy as np
import torch

давайте создадим 2 тензора, чтобы выполнить над ними какие-то операции

t1 = torch.tensor([[1,2],[3,4]])
t2 = torch.tensor([[5,6],[7,8]])

Мудрые операции с элементами

извините за корявое форматирование

print("Tensor addition : {}\nTensor Subtraction : {}\nTensor Multiplication : {}\nTensor Division : {}".format(t1+t2,
t1-t2,t1*t2,t1//t2))
Output:
Tensor addition : tensor([[ 6,  8],         
                          [10, 12]])
 
Tensor Subtraction : tensor([[-4, -4],         
                             [-4, -4]])
 
Tensor Multiplication : tensor([[ 5, 12],         
                                [21, 32]])
 
Tensor Division : tensor([[0, 0],         
                          [0, 0]])

Вещание

широковещательная передача — это функция, которая позволяет нам выполнять арифметические операции с тензорами разных размеров
В приведенном ниже примере скаляр «2» преобразуется в тензор формы t1, а затем выполняются сложение и вычитание.

#broadcasting with scalars
print("{}\n{}".format(t1 + 2,t1 - 2))
output:
tensor([[3, 4],         
        [5, 6]]) 
tensor([[-1,  0],         
        [ 1,  2]])

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

#broadcasting tensors
t3 = torch.tensor([[1,2],[3,4]])
t5 = torch.tensor([5,5])
print(t3+t5)
output:
tensor([[6, 7],         
        [8, 9]])

поначалу трансляция может сбивать с толку. Но при достаточной практике становится легко

Операции сокращения

Операции редукции — это операции, которые при выполнении уменьшают размер тензора

#reduction operations
print(t1)
print("Some of the reduction operations are:\nadd:{}\nmax:{}\nproduct:{}".format(t1.sum(),t1.max(),t1.prod()))
output:
tensor([[1, 2],
        [3, 4]])
Some of the reduction operations are: 
add:10 
max:4 
product:24

Функция Argmax: возвращает индекс наибольшего элемента тензора.

#argmax function
print(t1,"\nindex of the largest element is : ",t1.argmax())
output:
tensor([[1, 2],         
        [3, 4]])
  
index of the largest element is :  tensor(3)

Тензор к типам данных Python

Точно так же, как массивы numpy могут быть преобразованы в тензоры torch, тензоры также могут быть преобразованы в массивы numpy или обычные типы данных python.
Если это скаляр, .item() преобразует тензор в целое число Python
Если это вектор, .tolist() преобразует тензор в список Python

#tensor to python datatypes
print(t1.max().item(),"\n{}".format(t1.flatten().tolist()))
output:
4  
[1, 2, 3, 4]

Вывод

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

Спасибо