基礎|什麼是張量、資料立體、矩陣、向量和純數

微wx笑發表於2018-07-24

來源:雲棲社群 作者:碼府

張量就是一個變化量。

張量有零階、一階、二階、三階、四階等等。

零階張量是純量(數值)

一階張量是向量(數值和方向的組合)

二階張量是矩陣(向量的組合)

三階張量是資料立體(矩陣的組合)

四階張量(資料立體的組合)

等等。

1、純量就是一個數值,可以看成是一個數值上的變化量。

2、向量是點到點的變化量,而點可以是一維空間上的點、二維空間上的點、三維空間上的點,等等。

一維空間上的點的變化,好像點(x)線上上的移動,也即是左右的線性變化,變化量可以表示為[x1]。

二維空間上的點的變化,好像點(x,y)在面上的移動,也即是前後左右的線性變化,變化量可以表示為[x1, y1]。

三維空間上的點的變化,好像點(x,y,z)在體上的移動,也即是前後上下左右的線性變化,變化量可以表示為[x1, y1, z1]。

N維空間上的點的變化,好像點(x,y,z,…..n)在體上的移動,也即是2n個方向的線性變化,變化量可以表示為[x1, y1, z1,……n1]。

3、矩陣是圖形到圖形的變化量,而圖形可以是一維的線、二維的面、三維的體,等等。

3.1、一維的線的變化,我們知道兩點可以表示一線段,則需要用兩個向量組成的矩陣對兩點進行變化,就能達到對線段的變化。

3.2、二維的面的變化,我們知道三點可以表示一個三角形,四點可以表示一個四邊形,五點可以表示一個五邊形,等等。就拿三角形來說,需要用三個向量組成的矩陣對三點進行變化,就能達到對三角形的變化。

3.3、三維的體的變化,我們知道4點可以表示一個三角堆,5點可以表示四稜錐、6點可以表示一個三稜柱,等等。就拿三角堆來說,需要用四個向量組成的矩陣來對四個頂點進行變化,就能達到對三角堆的變化。

4、三階張量可以表示影像的變化量,影像與圖形的不同是影像的點除了有座標,還具有顏色特性,如RGB、RGBA、YCbcr等表示的顏色。拿RGB的影像來說,它的變化量包括座標和色值變化。影像座標的變化相當於圖形的變化,即是一個矩陣的變化。色值變化也就是RGB在顏色空間中的一個點變化,也是一個矩陣的變化,影像變化有兩個矩陣變化,三階張量是矩陣的組合,則可以用三階張量來表示影像的變化量,如tensor[3,5,5]表示3顏色通道的5*5大小圖形的變化量。

5、四階張量在TensorFlow的神經卷積網路中,經常用到。下面舉個例子。

5.1、輸入張量格式:[batch, in_height, in_width, in_channels]

5.2、卷積核格式:[filter_height, filter_width, in_channels, out_channels]

5.3、我們來對輸入圖片進行卷積得到特徵圖片。

一張5通道的5*5的輸入圖片:input = [1, 5, 5, 5];

5輸入通道、7輸出通道的3*3大小的卷積核:filter = [3, 3, 5, 7];

strides=[1,1,1,1]表示各個方向步長為1;

padding=“SAME”表示卷積核遍歷到輸入圖片的每個畫素,得到的特徵圖片與輸入圖片是一樣大小。

tf.shape(tf.nn.conv2d(input, filter, strides=[1,1,1,1], padding=“SAME”));

卷積結果是:[1, 5, 5, 7]

5.4、用圖形來表示上面的卷積過程。


相關文章