二维张量

2025年3月17日 | 阅读 3 分钟

二维张量类似于二维矩阵。一个二维矩阵有n行和n列。类似地,二维张量也有n行和n列。

一个二维张量有如下表示

Two Dimensional Tensor

一个灰度标量图像是一个二维像素矩阵。每个像素的强度用一个数值表示,范围从0到255,其中强度值为0表示没有强度,完全是黑色,255表示最大强度,完全是白色。我们可以存储这个二维数值网格。

Two Dimensional Tensor

创建二维张量

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

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

输出

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

Two Dimensional Tensor

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

输出

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

Two Dimensional Tensor

访问二维张量元素

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

示例

输出

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

Two Dimensional Tensor

张量乘法

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

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

输出

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]])

Two Dimensional Tensor

三维张量

三维张量是借助view()方法创建的。一个三维张量有如下结构

Two Dimensional Tensor

从 3D 张量访问元素

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

示例

输出

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

Two Dimensional Tensor

三维张量的切片

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

示例

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

输出

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]])

Two Dimensional Tensor