PyTorch 如何理解張量:一維張量、二維張量、行/列向量、矩陣
阿新 • • 發佈:2022-03-03
理解張量,並將張量與線性代數的知識連線起來,我認為最重要的是理解 tensor
的兩個屬性:shape
和 ndim
。
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
中張量(向量/矩陣)的乘法請看這篇博文。