PyTorch|PyTorch 如何理解张量(一维张量、二维张量、行/列向量、矩阵)

理解张量,并将张量与线性代数的知识连接起来,我认为最重要的是理解 tensor 的两个属性:shapendim
ndim 表示张量的维度,一维张量的 ndim 值为 1,二维张量的 ndim 值为 2。
shape 表示张量的形状,它的值是一个列表,列表元素个数与张量的维度相等,每一个元素值表示张量在此维度的元素个数。
举例来说:

>>> tensor = torch.randn(3, 2, 2) >>> tensor tensor([[[ 1.1070, -1.3736], [-1.6743,1.4504]],[[ 0.0119, -0.1400], [ 0.5095, -0.8208]],[[-1.5840, -0.2786], [ 2.3791, -1.4570]]]) >>> tensor.ndim 3 >>> tensor.shape torch.Size([3, 2, 2])

对于这样一个张量,它有三个维度,shape = 3 × 2 × 2 ,这表示此张量有三个二维张量,每个二维张量中有两个一维张量,每个一维张量中有两个元素。
然后我们从线性代数的角度来理解张量:
由于行向量和列向量都是向量,而向量在 PyTorch 中被抽象为一维张量,因此在 PyTorch 中不区分行向量和列向量,一律都是一维张量。
初学者可能会将 torch.Size(1, n) 的张量认为是行向量,将 torch.Size(n, 1) 的张量认为是列向量,然而这两种张量的 ndim = 2 ,因此它们是二维张量,可以类比为线性代数中的矩阵。甚至于 torch.Size(1, 1) 的张量都是矩阵,因为它是二维张量。
【PyTorch|PyTorch 如何理解张量(一维张量、二维张量、行/列向量、矩阵)】关于 PyTorch 中张量(向量/矩阵)的乘法请看这篇博文。

    推荐阅读