PyTorch 教程-二维张量
二维张量类似于二维矩阵。一个二维矩阵有n行和n列。同样,二维张量也有n行和n列。
创建二维张量
要创建一个二维张量,首先必须使用torch的arrange()方法创建一个一维张量。这个方法包含两个整数类型的参数。一旦创建了一维张量,下一步就是将其视图更改为二维形式,并将这个视图存储在二维类型的变量中。
让我们看一个创建二维张量的示例:
import torchx=torch.arange(0,9)xy=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]])
👉点击领取:最全Python资料合集
注意:要检查张量的维度,我们必须使用张量的dim()方法。
import torchx=torch.arange(0,9)xy=x.view(3,3)yx.dim()y.dim()
输出:
tensor([0, 1, 2, 3, 4, 5, 6, 7, 8])tensor([[0, 1, 2],[3, 4, 5],[6, 7, 8]])12
访问二维张量元素
让我们看一个二维张量的示例,以了解如何使用索引从二维张量中访问特定元素。
示例
import torchx=torch.arange(0,9)xy=x.view(3,3)yy[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 torchmat_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_amat_btorch.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]])
三维张量
从三维张量中访问元素
从三维张量中访问元素非常容易。这将使用索引完成。
示例
import torchx=torch.arange(18)y=x.view(3, 2, 3)yy[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 torchx=torch.arange(18)y=x.view(3,2,3)yy[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]])
热门推荐