張量tensor:機器學習的基本資料結構介紹 - Santiago

banq發表於2020-12-28

張量是機器學習系統使用的資料結構,瞭解它們是您應該早期建立的一項基本技能。張量是數字資料的容器。這是我們儲存將在系統中使用的資訊的方式。
三個主要屬性定義張量:
  1. 等級rank
  2. 它的形狀shape
  3. 其資料型別datatype

 

張量的等級Rank
張量的等級rank是指張量的軸數。例子:

  1.  矩陣的等級是2,因為它有兩個軸。 
  2. 向量的等級為1,因為它具有單個軸。

 

張量的形狀Shape
張量的形狀描述了沿每個軸的維數。例:

  1. 方陣(square matrix)可具有(3,3)維度。
  2. 等級為3的張量可以具有(2、5、7)維度。

 

張量的資料型別
張量的資料型別是指其中包含的資料型別。例如,當使用Python的numpy庫,以下是一些受支援的資料型別:

  • float32
  • float64
  • uint8
  • int32
  • int64

 
在前面使用了術語“向量”和“矩陣”來指代具有特定等級(分別為1和2)的張量。我們在描述張量時也可以使用這些數學概念。
  • 標量scalar

標量(或0維度D的張量)的等級為0,並且包含一個數字。這些也稱為“ 0維張量”。下圖顯示瞭如何使用numpy構造0D張量。注意它的形狀和等級(.ndim屬性。)

import numpy as np;
tenseor = np.array(42);
tensor.shape();
tensor.ndim

結果:0
  • 向量

向量(或一維張量)的等級為1,代表數字陣列。下面顯示了形狀為(4,)的向量。請注意其等級(.ndim屬性)如何為1。

import numpy as np;
tenseor = np.array([8,16,32,64]);
tensor.shape(4,);
tensor.ndim

結果:1
  • 矩陣

矩陣(或2D張量)的等級為2,代表向量陣列。矩陣的兩個軸通常稱為“行”和“列”。下面顯示了形狀為(3,4)的矩陣。

import numpy as np;
tenseor = np.array( [2,10,20,22],
             [8,16,32,64],
             [5,10,15,20]);
tensor.shape(3,4);
tensor.ndim

結果:2
  • 高維

可以透過將低維張量包裝在陣列中來獲得高維張量(3D,4D等)。例如,將2D張量打包成一個陣列可得到3D張量。將其包裝在另一個陣列中可以得到4D張量,依此類推。

import numpy as np;
tenseor = np.array( [[[2,10,20,22],
             [8,16,32,64],
             [5,10,15,20]],

             [[1,11,21,31]

             [2,12,22,32]

             [3,13,23,33]);
tensor.shape(2,3,4);
tensor.ndim

結果:3
 
以下是一些常見的張量表示形式:
  •  向量:1D-(特徵feature)
  •  序列Sequences:2D-(時間步長timesteps,特徵)
  •  圖片:3D-(高度,寬度,通道)
  •  影片:4D-(幀,高度,寬度,通道)

 
通常,機器學習演算法一次處理一個資料子集(稱為“批處理”。)使用一批資料時,張量的第一個軸保留用於批處理的大小(樣本數)。
例如,如果您處理2D張量(矩陣),則它們中的一批將總共具有3個維: (樣本,行,列)請注意,第一個軸是批次中的矩陣數。
按照相同的邏輯,可以將一批影像表示為4D張量:
  • (樣本,高度,寬度,通道)

以及一批影片作為5D張量:
  • (樣本,幀,高度,寬度,通道)

 

相關文章