首页 > 智能网

讨论5种基本和最常用的张量运算

来源:智能网
时间:2021-02-17 10:03:15
热度:10

讨论5种基本和最常用的张量运算讨论5种基本和最常用的张量运算深度学习使我们能够执行非常复杂的任务。为了有效地执行任务,我们需要一个灵活的工具。由于其简单性,Pytorch为我们提供

讨论5种基本和最常用的张量运算

深度学习使我们能够执行非常复杂的任务。为了有效地执行任务,我们需要一个灵活的工具。由于其简单性,Pytorch为我们提供了此选项。它使用GPU(图形处理单元)提供加速的操作。Pytorch是一个高性能的库,因此它得到了普及。下面的notebook包含一些基本功能,这些功能对于执行张量运算非常有用。这些运算用于多维张量和算术运算。通用运算——逆运算创建运算——复数算术运算——转置改变运算——添加减少运算——Amax我们将讨论这5个基本功能的示例并观察错误。在开始之前,让我们安装并导入PyTorch# Windows
# !pip install numpy torch==1.7.0+cpu torchvision==0.8.1+cpu torchaudio==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
# import torch and other required modules
import torch

1. 通用运算——逆运算

我们将使用的第一个函数是“反函数”。a = torch.randn(2,3,3)
print(a)
torch.inverse(a)

上面的“ randn”函数创建了一个3X3方阵,最外面具有2个行。然后,“逆”函数取矩阵中各个元素的逆a = torch.rand(4,4)
print(a)
torch.inverse(a)

上面是一个4X4方阵,其中每个元素都使用反函数进行反算。a = torch.rand(4,3)
print(a)
torch.inverse(a)
RuntimeError: A must be batches of square matrices, but they are 3 by 4 matrices

上面给出的第三个示例抛出错误。“逆”函数给出矩阵各个元素的逆。该错误归因于矩阵不是正方形的事实。通过更改尺寸,可以获得正确的结果。逆函数对于在Pytorch神经网络上执行逆函数非常有用。

2. 创建运算——复数

让我们使用函数通过创建矢量或矩阵来初始化对张量数据的处理。在这里,我们将使用复数的功能。为了获得最终的complex64,我们需要输入float32类型。real = torch.tensor([2,1], dtype=torch.float32)
imag = torch.tensor([2,3], dtype=torch.float32)
a= torch.complex(real, imag)
a.dtype

在下面,我们使用rand函数创建了名为“ real”和“ imag”的张量。使用“复数”函数,我们将两个张量结合在一起,并形成了具有实数和虚数的单个方程real = torch.rand(2,3)
imag = torch.rand(1,3)
print(real)
print(imag)
x = torch.complex(real, imag,)
print(x)

在下面的示例中,它不是尝试使用两个值“ real”和“ imag”数据创建一个复数张量,而是尝试创建一个复数张量。我们可能会因为缺少单个方括号而看到上述错误,而该方括号会给我们所需的结果。real = torch.tensor(2., 4)
imag = torch.tensor(7., 3)
x = torch.complex(real, imag,)
x
TypeError: tensor() takes 1 positional argument but 2 were given

我们可以使用上述函数来创建由实数和虚数数据组成的复数张量。

3. 算术运算——转置

在这里,我们将使用转置功能来处理张量数据,从而使我们的操作变得容易。a = torch.rand(2,3,5)
print(a)
torch.transpose(a,1,2)

从最外面的第1行开始,我们已换位了第一行的所有元素。a = torch.rand(2,5)
print(a)
torch.transpose(a, -1, 0)

这里,在上述情况下,我们给出了要转置的第一维和第二维。TypeError: transpose() received an invalid combination of arguments - got (Tensor), but expected one of:  * (Tensor input, name dim0, name dim1)  * (Tensor input, int dim0, int dim1)

在张量数据上使用转置功能时,我们还必须传递尺寸,以阐明需要转置哪些尺寸。如果我们使用't'而不是'transpose'函数,那么上面的函数将可以正常工作。当必须转置张量数据的给定维数,同时指定需要转置的“ n”维数时,可以使用“转置”函数。

4. 改变运算——添加

让我们执行一些算术运算——在张量数据上添加一个函数。a = torch.randn(10)
print(a)
torch.add(a,5)

第二个属性(在上述情况下为5)应为整数,必须将其添加到张量数据中(在上述情况下)。结果将是两个的总和。a = torch.rand(5)
b = torch.rand(5)
print(a)
print(b)
torch.add(a,b)

“add”函数计算相同维数的两个张量数据之和,并给出相同维数的结果。a = torch.rand(10)
b = torch.rand(5)
torch.add(a,b)
RuntimeError: The size of tensor a (10) must match the size of tensor b (5) at non-singleton dimension 0

在张量中执行任何算术运算时,我们需要注意输入张量的尺寸彼此匹配。“Add”函数可用于添加任何两个给定的张量,或添加具有给定数字的张量数据。

5. 归约运算——Amax

使用某些归约运算——amax。这些将有助于对张量数据执行统计操作。这里,在下面的示例中,“ amax”函数用于给出每个尺寸中的最大元素,其中“ -1”表示要缩小的尺寸。a = torch.rand(3,2)
print(a)
torch.amax(a, dim = -1)

同样,在以下情况下,“ amax”函数为每个切片提供张量数据中的最大值。a = torch.rand(5)
print(a)
torch.amax(a, dim=-2)

在以下情况下,amax函数的维数在-1到0之间变化。因此,“ dim”属性必须在此范围内。a = torch.tensor([[3,2], [1,2], [4,7],[6,5]])
print(a)
torch.amax(a, dim = 1)
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got -2)

结论

在本文中,我们涵盖了从创建张量数据到执行算术运算所需的函数。

    无相关信息