1. 程式人生 > 其它 >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 中張量(向量/矩陣)的乘法請看這篇博文