张量基本概念
張量是一種表示物理量的方式,這個方式就是用基向量與分量組合表示物理量(Combinationof basis vector and component)。
由于基向量可以有豐富的組合,張量可以表示非常豐富的物理量。此外,張量所描述的物理量是不隨觀察者或者說參照系而變化的,當(dāng)參照系變化時(其實就是基向量變化),其分量也會相應(yīng)變化,最后結(jié)果就是基向量與分量的組合(也就是張量)保持不變。這一點對于我們構(gòu)造數(shù)據(jù)對象,進(jìn)而展開分析建模,有著至關(guān)重要的意義。
回顧過去我們對“量”的認(rèn)識過程,我們都懂得用“一個數(shù)”來表示數(shù)量(標(biāo)量),用“一個數(shù)組”(列矩陣或行矩陣)來表示一個向量,這都屬于代數(shù)手法。如果采用幾何手法,標(biāo)量中的實數(shù)可以表示為一維坐標(biāo)系(如數(shù)軸)上的一個點,復(fù)數(shù)可以表示為二維坐標(biāo)系(如復(fù)平面)上的一個點。向量通常可以表示為二維、三維或更高維坐標(biāo)系中的一個空間點或有向線段。如果我們把代數(shù)手法和幾何手法結(jié)合起來即采用解析幾何的手法,向量又可以表示為某種坐標(biāo)基向量和坐標(biāo)分量的線性組合。
那么現(xiàn)在,我們接觸的張量該如何表示呢?讓我們逐“階”而上,看看張量的數(shù)據(jù)結(jié)構(gòu)形象
1、一階張量(向量)
不妨首先假定在三維空間中,則一個一階張量(向量)有3個分量,可以表示為一個有序3元數(shù)組或1×3階的行矩陣
Tj = [T1 T2 T3]
在n維空間中,一個一階張量(向量)有n個分量,可以表示為一個有序n元數(shù)組,或表示為一個1×n階行矩陣
Tj = [T1 T2 ...... Tn]
也就是說,一個一階張量(向量)可以用一個行矩陣表示,似乎構(gòu)成“一條直線”。
2、二階張量
在三維空間中,一個二階張量則有9個分量,可以表示為一個有序9元數(shù)組或3×3階的矩陣
一般地,在n維空間中,一個二階張量有n2個分量,可以表示為一個有序n2元數(shù)組,或表示為一個n×n階矩陣
也就是說,一個二階張量可以用一個矩陣表示,似乎構(gòu)成“一張平面”。如下圖所示: 圖:二階張量矩陣平面
3、三階張量
在三維空間中一個三階張量
有27個分量,似乎可以構(gòu)成一組3個矩陣,每個矩陣都是3×3個元素。設(shè)想“三張平面”構(gòu)成一個“立方體”。如下圖所示:
圖1:三階張量數(shù)據(jù)
如果在n維空間,一個三階張量
有n^3個分量,也可以構(gòu)成n個矩陣,每個矩陣都是n×n個元素。設(shè)想“n張平面”構(gòu)成一個“立方體”,好像一塊積木。如下圖所示:
圖2:三階張量立方體積木
4、四階張量
繼續(xù)探討我們的“積木游戲”。在三維空間中一個四階張量
有81個分量,似乎可以構(gòu)成一組9個矩陣,每個矩陣都是3×3個元素。設(shè)想每“三張平面”構(gòu)成一個“立方體”,共有3個“立方體”或曰3塊“積木”。3塊“積木”排成一列,好像由矩陣構(gòu)成的“陣列”。
如果在n維空間,一個四階張量
有n^4個分量,也可以構(gòu)成n^2個矩陣,每個矩陣都是n×n個元素。設(shè)想每“n張平面”構(gòu)成一個“立方體”(一塊積木),n塊積木排成一列。我們把這樣相互關(guān)聯(lián)的一組矩陣叫做“陣列”。如下圖所示:
圖3:四階張量數(shù)據(jù)陣列
5、五階張量
如果是n維空間中的一個五階張量
,共有n^5個分量,則可以構(gòu)成n^3個矩陣。設(shè)想每n張平面(矩陣)構(gòu)成一塊積木,每n塊積木構(gòu)成一條陣列,共有n條陣列,可以壘成“一堵墻”。假如以元素(張量的分量)為單位,這堵“墻”的高和長都是n^2,厚度是n。以3維空間為例,如下圖所示:
圖4:五階張量陣列墻(設(shè)n=3)
6、六階張量
對于6階張量,n^6個分量可以組成n^4張矩陣平面,構(gòu)成n^3塊積木,再排成n^2條陣列,壘成n堵墻,最后拼成一個方垛。以3維空間為例,如下圖所示:
圖5:六階張量數(shù)據(jù)方垛(設(shè)n=3)
7、M階張量
一般地,在n維空間中的一個M階張量共有個分量,可以組成 張矩陣平面,構(gòu)成 塊積木,再排成 條陣列,壘成 堵墻,最后拼成 個方垛,再排成 條方垛陣列,......依此類推。
我的天啊!太恐怖啦!不要怕,計算機最擅長作這類數(shù)據(jù)結(jié)構(gòu)的運算和處理。這就是在計算機時代的今天為什么要研究和普及張量算法的原因。
?
1.張量的四種定義
1.張量是多維數(shù)組,這個定義常見于各種人工智能軟件。
2.張量是某種幾何對象,不會隨著坐標(biāo)系的改變而改變
3.張量是向量和余向量(covector)通過張量積(tensor product)組合而成的。
4.張量是多重線性映射,即:
除零階張量外,張量的具體表示還與坐標(biāo)系的選擇有關(guān),選擇不同的坐標(biāo)系,意味著選擇不同的基矢(basis)進(jìn)行展開。以矢量為例,在給定坐標(biāo)系,矢量由多個數(shù)構(gòu)成,這些數(shù)實際上為當(dāng)前基矢下的展開系數(shù),如果坐標(biāo)軸變化了,即基矢變化了,那么自然而然,對應(yīng)的展開系數(shù)也就變化了。
2.張量表示形式
一階張量可以理解為一個向量,二階張量可以理解為矩陣,三階張量可以理解成立方體,四階張量可以理解成立方體組成的一個向量,五階張量可以理解成立方體組成的矩陣,依次類推。
把三維張量畫成一個立方體:
3.現(xiàn)實世界中的數(shù)據(jù)張量
1)向量數(shù)據(jù)
2D張量,形狀為(samples,features)
2)時間序列數(shù)據(jù)或序列數(shù)據(jù)
3D張量,形狀為(sampels,timesteps,features)
當(dāng)時間(或序列順序)對于數(shù)據(jù)很重要時,應(yīng)該將數(shù)據(jù)存儲在帶有時間軸的3D張量中。每個樣本可以被編碼為一個向量序列(即2D張量),因此一個數(shù)據(jù)批量就被編碼為一個3D張量。
圖像通常具有三個維度:高度,寬度和顏色深度。雖然灰度圖像(比如MNIST數(shù)字圖像)只有一個顏色通道,因此可以保存在2D張量中,但按照慣例,圖像張量始終是3D張量,灰度圖像的彩色通道只有一維。因此,如果圖像大小為 256 × 256 256\times256256×256 ,那么128張灰度圖像組成的批量可以保存在一個形狀為(128,256,256,1)的張量中,而128張彩色圖像組成的批量則可以保存在一個形狀為(128,256,256,3)的張量中。
圖像張量的形狀有兩種約定:通道在后(channels-last)的約定(在 TensorFlow 中使用)和 通道在前(channels-first)的約定(在 Theano 中使用)。Google 的 TensorFlow 機器學(xué)習(xí)框架將 顏色深度軸放在最后:(samples, height, width, color_depth)。與此相反,Theano 將圖像深度軸放在批量軸之后:(samples, color_depth, height, width)。如果采 用 Theano 約定,前面的兩個例子將變成 (128, 1, 256, 256) 和 (128, 3, 256, 256)。 Keras 框架同時支持這兩種格式。
3)圖像
4D張量,形狀為(samples,height,width,channels)或(samples,channels,height,width)
4)視頻
5D張量,形狀為(samples,frames,height,width,channels)或(samples,frames,channels,height,width)
視頻數(shù)據(jù)是現(xiàn)實生活中需要用到 5D 張量的少數(shù)數(shù)據(jù)類型之一。視頻可以看作一系列幀, 每一幀都是一張彩色圖像。由于每一幀都可以保存在一個形狀為 (height, width, color_ depth) 的 3D 張量中,因此一系列幀可以保存在一個形狀為 (frames, height, width, color_depth) 的 4D 張量中,而不同視頻組成的批量則可以保存在一個 5D 張量中,其形狀為 (samples, frames, height, width, color_depth)。
4)階(order/ways/modes/rank)
階:張成所屬張量空間的向量空間的個數(shù)
一階張量(向量):[5,10,15,30,25]
二階張量(矩陣):([[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]])
三階張量:([[[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]],[[3,1,1,0,2],[2,3,5,7,9],[7,8,5,2,3]],[[15,0,5,0,5],[0,0,5,0,0],[7,0,5,0,0]]])
在實際的操作中,秩可以理解為[的深度。例如:
rank = 1:[0,1,2]
rank = 2:[[0,1],[2,3]]
rank = 3:[[[0,1],[2,3]],[[4,5],[6,7]]]
一階張量(向量):
二階張量(矩陣):
三階或更高階張量:
零階張量(數(shù)量):
以三階張量為例:
?
總結(jié)
- 上一篇: 结构张量 matlab 图像,图像处理中
- 下一篇: 【以前的空间】网络流合集