1. 程式人生 > >神經網路的資料表示- 張量(tensor)

神經網路的資料表示- 張量(tensor)

神經網路使用的資料儲存在多維Numpy陣列中,也叫張量(tensor)。

張量是一個數據容器,張量的維度(dimension)通常叫做軸(axis)。

1. 標量(0D張量)

僅含一個數字的張量叫做標量(scalar,也叫標量張量、零維張量、0D張量)。在Numpy中,一個float32或float64數字就是一個標量張量(或標量陣列)。可以用ndim屬性來檢視一個Numpy張量的軸的個數。標量張量有0個軸(ndim == 0)。張量軸的個數也叫做階(rank)。
eg:
在這裡插入圖片描述

2. 向量(1D張量)

數字組成的數字叫做向量(vector)或一維張量(1D張量)。
eg:
在這裡插入圖片描述


這個向量有5個元素,所以被稱為5D向量。

注:5D向量和5D張量不同,5D向量只有一個軸,沿著軸有5個維度,而5D張量有5個軸,沿著每個軸可能有任意個維度

維度(dimensionality)可以表示沿著某個軸上的元素個數,也可以表示張量中軸的個數。

3. 矩陣(2D張量)

向量組成的陣列叫矩陣(matrix)或二維張量(2D張量)。矩陣有2個軸(也叫行和列)。

4. 3D張量與更高維張量

將多個矩陣組成一個新的陣列,可以得到一個3D張量。
將多個3D張量合成一個數組,可以建立一個4D張量。
以此類推,深度學習處理的一般是0D到4D的張量,但處理視訊資料時可能會遇到5D張量。

5. 關鍵屬性

1)軸的個數(階)

例如,3D張量有3個軸,矩陣有2個軸,這在Numpy等python庫中也叫做張量的ndim。

2)形狀

整數元組,表示張量沿每個軸的維度大小(元素個數)。例如,矩陣的形狀可以為(3,5),3D張量的形狀可以為(3,3,5)。向量的形狀只包含一個元素,比如(5,),而標量的形狀為空,即()。

3)資料型別(在python庫中通常叫做dtype)

例如,張量的型別可以是float32、unit8、float64等。

6. 現實世界中的資料張量

1)向量資料

2D張量,形狀為 (samples, features)。

2)時間序列資料或序列資料

3D張量,形狀為 (samples, timesteps, features)。

3)影象

4D張量,形狀為 (samples, height, width, channels) 或 (samples, channels, height, width)。

4)視訊

5D張量,形狀為 (samples, frames, height, width, channels) 或 (samples, frames, channels, height, width)。

7. 廣播

形狀不同的張量相加,較小的張量會被廣播(broadcast)以匹配較大張量的形狀。廣播包含以下兩步:
1)向較小的張量新增軸(廣播軸),使其ndim與較大的張量相同。
2)將較小的張量沿著新軸重複,使其形狀與較大的張量相同。