Больше тензорных операций в 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]
Вывод
еще несколько тензорных операций и трансляция показаны в этом посте.