你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?
本文的ipynb 格式見CSDN下載。
0維張量/標(biāo)量
標(biāo)量是一個數(shù)字
1維張量/向量
1維張量稱為“向量”。
2維張量
2維張量稱為矩陣
3維張量
公用數(shù)據(jù)存儲在張量
時間序列數(shù)據(jù)
股價
文本數(shù)據(jù)
圖片
彩色圖片
5D張量
結(jié)論
實際上,你可以使用一個數(shù)字的張量,我們稱為0維張量,也就是一個只有0維的張量。
它僅僅只是帶有一個數(shù)字的水桶。想象水桶里只有一滴水,那就是一個0維張量。
1維張量/向量,1維張量稱為“向量”
x = np.array([1,2,3,4]) print(x) #通過NumPy’s ndim函數(shù),查看張量具有多個坐標(biāo)軸。 x.ndim2維張量
x = np.array([[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]]) print(x) x.ndim3維張量
一個3維張量是一個數(shù)字構(gòu)成的立方體
y = np.array([[[5,10,15,30,25],[20,30,65,70,90],[7,80,95,20,30]],[[3,0,5,0,45],[12,-2,6,7,90],[34,3436,4364,3434,566]],[[17,13,25,30,15],[23,36,9,7,80],[1,-7,-5,22,3]]]) print(y) y.ndim3維=時間序列
4維=圖像
5維=視頻
一個圖像可以用三個字段表示:
(width, height, color_depth) = 3D (sample_size, width, height, color_depth) = 4D時間序列數(shù)據(jù)
用3D張量來模擬時間序列會非常有效!
醫(yī)學(xué)掃描——我們可以將腦電波(EEG)信號編碼成3D張量,因為它可以由這三個參數(shù)來描述:
(time, frequency, channel)這種轉(zhuǎn)化看起來就像這樣:
如果我們有多個病人的腦電波掃描圖,那就形成了一個4D張量:
紐交所開市時間從早上9:30到下午4:00,即6.5個小時,總共有6.5 x 60 = 390分鐘。
如此,我們可以將每分鐘內(nèi)最高、最低和最終的股價存入一個2D張量(390,3)。如果我們追蹤一周(五天)的交易,我們將得到這么一個3D張量:
即:(5,390,3)
同理,如果我們觀測10只不同的股票,觀測一周,我們將得到一個4D張量
(10,5,390,3)
假設(shè)我們在觀測一個由25只股票組成的共同基金,其中的每只股票由我們的4D張量來表示。那么,這個共同基金可以有一個5D張量來表示:
(25,10,5,390,3)
文本數(shù)據(jù)
我們也可以用3D張量來存儲文本數(shù)據(jù),我們來看看推特的例子。
首先,推特有140個字的限制。其次,推特使用UTF-8編碼標(biāo)準(zhǔn),這種編碼標(biāo)準(zhǔn)能表示百萬種字符,
但實際上我們只對前128個字符感興趣,因為他們與ASCII碼相同。所以,一篇推特文可以包裝成一個2D向量:
(140,128)
如果我們下載了一百萬篇川普哥的推文(印象中他一周就能推這么多),我們就會用3D張量來存:
這意味著,我們的川普推文集合看起來會是這樣:
(1000000,140,128)
圖片
4D張量很適合用來存諸如JPEG這樣的圖片文件。之前我們提到過,一張圖片有三個參數(shù):高度、寬度和顏色深度。
一張圖片是3D張量,一個圖片集則是4D,第四維是樣本大小。
MNIST圖片是黑白的,這意味著它們可以用2D張量來編碼,但我們習(xí)慣于將所有的圖片用3D張量來編碼,多出來的第三個維度代表了圖片的顏色深度。
MNIST數(shù)據(jù)集有60,000張圖片,它們都是28 x 28像素,它們的顏色深度為1,即只有灰度。
TensorFlow這樣存儲圖片數(shù)據(jù):
于是我們可以認(rèn)為,MNIST數(shù)據(jù)集的4D張量是這樣的:
(60000,28,28,1)
彩色圖片
彩色圖片有不同的顏色深度,這取決于它們的色彩(注:跟分辨率沒有關(guān)系)編碼。
一張典型的JPG圖片使用RGB編碼,于是它的顏色深度為3,分別代表紅、綠、藍(lán)。
這是一張我美麗無邊的貓咪(Dove)的照片,750 x750像素,這意味著我們能用一個3D張量來表示它:
(750,750,3)
然后,如果我們有一大堆不同類型的貓咪圖片(雖然都沒有Dove美),
也許是100,000張吧,不是DOVE它的,750 x750像素的。我們可以在Keras中用4D張量來這樣定義:
(10000,750,750,3)
5D張量
5D張量可以用來存儲視頻數(shù)據(jù)。TensorFlow中,視頻數(shù)據(jù)將如此編碼:
(sample_size, frames, width, height, color_depth)如果我們考察一段5分鐘(300秒),1080pHD(1920 x 1080像素),每秒15幀(總共4500幀),顏色深度為3的視頻,我們可以用4D張量來存儲它:
(4500,1920,1080,3)
當(dāng)我們有多段視頻的時候,張量中的第五個維度將被使用。如果我們有10段這樣的視頻,我們將得到一個5D張量:
(10,4500,1920,1080,3)
這個5D張量中值的數(shù)量為:
10 x 4500 x 1920 x 1080 x 3 = 279,936,000,000
在Keras中,我們可以用一個叫dype的數(shù)據(jù)類型來存儲32bits或64bits的浮點數(shù)
我們5D張量中的每一個值都將用32 bit來存儲,現(xiàn)在,我們以TB為單位來進(jìn)行轉(zhuǎn)換:
279,936,000,000 x 32 = 8,957,952,000,000bit = 1.119744T
參考文獻(xiàn)
Learning AI if You Suck at Math?—?P4?—?Tensors Illustrated (with Cats!)
你真的懂TensorFlow嗎?Tensor是神馬?為什么還會Flow?
總結(jié)
以上是生活随笔為你收集整理的你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行信用币无法调平额度?额度不能调平的原
- 下一篇: UFLDL教程: Exercise: S