一、啥是張量?
也許你剛剛對深度學習有了基本的了解,于是滿心歡喜的下載了tensorflow,準備開始搭建你的第一個神經網絡。但是,一個叫張量的東西讓你產生了疑惑,這是啥?張量本身是一個數學概念。你可能對于標量和向量非常熟悉了,但是,當我們想用數學語言去描述一個高維數據時,變量和向量就顯得力不從心了,所以張量的概念應運而生。事實上,張量本身是標量和向量概念的延伸。python中一個張量通常被保存為numpy數組,numpy也被應用于大部分的機器學習框架中。
我們可以把標量看成零階張量:
import numpy as np x = np.array(5) print(x)
輸出:5
向量看成一階張量:
x = np.array([1, 2, 3, 4]) print(x)
輸出:[1 2 3 4]
同樣的,把矩陣可以看成二階張量:
x = np.array([[1, 2, 3, 4], [5, 6, 7, 8]]) print(x)
輸出:[[1 2 3 4] [5 6 7 8]]
理論上張量可以延伸到n維數據:
二、深度學習中的定義
在深度學習領域我們完全可以把張量等同于一個數據的容器,或者干脆想象成要一個水桶。當水桶中只放了一滴水時就是0維張量,多滴水排成一排就是1維張量,聯排成面就變成了2維張量,依此類推,可以擴展到n維。這樣做的好處就是極大方便了數據的處理。
三、如何應用
假設一個地區有10000人,我們要把所有的居民信息存儲到計算機中,包括姓名、性別、年齡、職業、家庭住址、受教育程度、婚否這7個特征。這時可以定義一個(10000,7)的二維數組來存儲信息。然后,我們可以定義一個張量來裝這個數組,同時張量的最大維度也被定義成了(10000,7)。如果我們需要存儲10個地區的數據就可以定義一個3維張量,它的維度是(10,10000,7)。
一張圖片可以用3維張量來表示:(width, height, depth)。但是,通常情況下我們會處理一個包含多張圖片的數據集,這時就需要用4維張量來表示:(num,width, height, depth)。num維度代表圖片的數量。
一張圖片:
圖片數據集:
5維張量可以用來存儲視頻,在tensorflow中是這樣定義的:(sample_size, frames, width, height, color_depth)。假如我們有5段視頻,每段有1000幀,每幀長為1920,寬為1080,顏色深度為3。那么可以表示為(5,1000,1920,1080,3)。
-
機器學習
+關注
關注
66文章
8422瀏覽量
132714 -
深度學習
+關注
關注
73文章
5504瀏覽量
121224
發布評論請先 登錄
相關推薦
評論