📅  最后修改于: 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张量访问元素非常容易。这将使用索引来完成。
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]])