📜  PyTorch二维张量| 2D张量

📅  最后修改于: 2020-11-10 09:52:26             🧑  作者: Mango

二维张量

二维张量类似于二维度量。二维度量具有n行和n列。类似地,二维张量也具有n行和n列。

二维张量具有以下表示

灰度标量图像是像素的二维矩阵。每个像素的强度由介于0到255之间的数值表示,因此强度值0表示没有强度的事物完全为黑色,而255表示最大强度的事物为完全白色。我们可以存储此二维值网格。

创建二维张量

要创建二维张量,首先必须使用割炬的ranging()方法创建一维张量。此方法包含两个整数类型的参数。此方法根据给定参数按张量排列元素。创建一维张量后,下一步是将其视图更改为二维形式,并将该视图存储为变量的二维类型。

让我们看一个创建二维张量的例子

import torch
x=torch.arange(0,9)
x
y=x.view(3,3)
y

输出:

tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])


注意:要检查张量的尺寸,我们必须使用张量的dim()方法。

import torch
x=torch.arange(0,9)
x
y=x.view(3,3)
y
x.dim()
y.dim()

输出:

tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
1
2

访问二维张量元素

让我们看一个二维张量的例子,以了解如何使用索引从二维张量访问特定元素。

import torch
x=torch.arange(0,9)
x
y=x.view(3,3)
y
y[0,2]

输出:

tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])
tensor([[0, 1, 2],
        [3, 4, 5],
        [6, 7, 8]])
tensor(2)

张量乘法

以与度量乘法相同的方式完成乘法。张量乘法是通过将相应的行与相应的列相乘来完成的。张量乘法在深度学习模型中起着至关重要的作用。张量可以是一维,二维,三维等。张量的乘法仅在兼容的大小下完成。

让我们看一个张量乘法的例子

import torch
mat_a=torch.tensor([1,3,5,7,9,2,4,6,8])
mat_a=mat_a.view(3,3)
mat_b=torch.tensor([1,3,5,7,9,2,4,6,8])
mat_b=mat_b.view(3,3)
mat_a
mat_b
torch.matmul(mat_a,mat_b)# We can also usemat_a @ mat_b

输出:

tensor([[1, 3, 5],
        [7, 9, 2],
        [4, 6, 8]])
tensor([[1, 3, 5],
        [7, 9, 2],
        [4, 6, 8]])
tensor([[ 42,  60,  51],
        [ 78, 114,  69],
        [ 78, 114,  96]])

三维张量

借助view()方法制作三维张量。三维张量具有以下结构

从3D张量访问元素

从3D张量访问元素非常容易。这将使用索引来完成。

import torch
x=torch.arange(18)
y=x.view(3, 2, 3)
y
y[1,1,1]

输出:

tensor([[[ 0,  1,  2],
         [ 3,  4,  5]],
        [[ 6,  7,  8],
         [ 9, 10, 11]],
        [[12, 13, 14],
         [15, 16, 17]]])
tensor(10)

三维张量切片

段切片与我们将一维张量切片的方式非常相似。切片张量意味着将张量的元素切片为新的张量,或者可以说切片是通过分割张量来创建新的张量的过程。

让我们有一个三维张量,其中包含从0到17的元素,并且我们想将张量从6切成11。

import torch
x=torch.arange(18)
y=x.view(3,2,3)
y
y[1, 0:2, 0:3]        # can also apply y[1, :, :] 

输出:

tensor([[[ 0,  1,  2],
         [ 3,  4,  5]],
        [[ 6,  7,  8],
         [ 9, 10, 11]],
        [[12, 13, 14],
         [15, 16, 17]]])
tensor([[ 6,  7,  8],
[ 9, 10, 11]])