深度學習中的張量

2021-10-03 07:25:22 字數 1996 閱讀 3145

前面例子使用的資料儲存在多維 numpy 陣列中,也叫張量(tensor)。一般來說,當前所有機器學習系統都使用張量作為基本資料結構。張量對這個領域非常重要,重要到 google 的tensorflow 都以它來命名。張量這一概念的核心在於,它是乙個資料容器。它包含的資料幾乎總是數值資料,因此它是數字的容器。你可能對矩陣很熟悉,它是二維張量。張量是矩陣向任意維度的推廣[注意,張量的維度(dimension)通常叫作軸(axis)]。

僅包含乙個數字的張量叫作標量(scalar,也叫標量張量、零維張量、0d 張量)。

數字組成的陣列叫作向量(vector)或一維張量(1d 張量)。一維張量只有乙個軸。下面是乙個 numpy 向量。

>>

> x = np.array([12

,3,6

,14,7

])>>

> x

array([12

,3,6

,14,7

])>>

> x.ndim

1

這個向量有 5 個元素,所以被稱為 5d 向量。不要把 5d 向量和 5d 張量弄混! 5d 向量只有乙個軸,沿著軸有 5 個維度,而 5d 張量有 5 個軸(沿著每個軸可能有任意個維度)。維度(dimensionality)可以表示沿著某個軸上的元素個數(比如 5d 向量),也可以表示張量中軸的個數(比如 5d 張量),這有時會令人感到混亂。對於後一種情況,技術上更準確的說法是 5 階張量(張量的階數即軸的個數),但 5d 張量這種模糊的寫法更常見。

張量是由以下三個關鍵屬性來定義的。

‰ 軸的個數(階)。例如,3d 張量有 3 個軸,矩陣有 2 個軸。這在 numpy 等 python 庫中也叫張量的 ndim。

‰ 形狀。這是乙個整數元組,表示張量沿每個軸的維度大小(元素個數)。例如,前面矩陣示例的形狀為 (3, 5),3d 張量示例的形狀為 (3, 3, 5)。向量的形狀只包含乙個元素,比如 (5,),而標量的形狀為空,即 ()。

‰ 資料型別(在 python 庫中通常叫作 dtype)。這是張量中所包含資料的型別,例如,張量的型別可以是 float32、uint8、float64 等。在極少數情況下,你可能會遇到字元(char)張量。注意,numpy(以及大多數其他庫)中不存在字串張量,因為張量儲存在預先分配的連續記憶體段中,而字串的長度是可變的,無法用這種方式儲存。

我們使用語法 train_images[i] 來選擇沿著第乙個軸的特定數字。選擇張量的特定元素叫作張量切片(tensor slicing)。

通常來說,深度學習中所有資料張量的第乙個軸(0 軸,因為索引從 0 開始)都是樣本軸(samples axis,有時也叫樣本維度)。

第乙個軸(0 軸)叫作批量軸(batch axis)或批量維度(batch dimension)。

這是最常見的資料。對於這種資料集,每個資料點都被編碼為乙個向量,因此乙個資料批量就被編碼為 2d 張量(即向量組成的陣列),其中第乙個軸是樣本軸,第二個軸是特徵軸。

影象通常具有三個維度:高度、寬度和顏色深度。雖然灰度影象(比如 mnist 數字影象)只有乙個顏色通道,因此可以儲存在 2d 張量中,但按照慣例,影象張量始終都是 3d 張量,灰度影象的彩色通道只有一維。因此,如果影象大小為 256×256,那麼 128 張灰度影象組成的批量可以儲存在乙個形狀為 (128, 256, 256, 1) 的張量中,而 128 張彩色影象組成的批量則可以儲存在乙個形狀為 (128, 256, 256, 3) 的張量中。

影象張量的形狀有兩種約定:通道在後(channels-last)的約定(在 tensorflow 中使用)和通道在前(channels-first)的約定(在 theano 中使用)。google 的 tensorflow 機器學習框架將顏色深度軸放在最後:(samples, height, width, color_depth)。與此相反,theano將影象深度軸放在批量軸之後:(samples, color_depth, height, width)。

深度學習 張量

張量是乙個資料容器,包含的資料是數值資料。矩陣是二維張量,而張量則是矩陣向任意維度的推廣。張量的維度 dimension 通常叫作軸 axis 標量 只有乙個數字的張量叫作標量,也叫0維張量。我們可以通過ndim來檢視張量的維度,或者說軸的個數。向量一維張量,只有乙個軸。x np.array 1 2...

深度學習 tensorflow張量運算

為什麼我們單獨講解乙個tensorflow的張量 矩陣 運算了?因為神經網路原理其實就是矩陣的運算。如圖所示,我們有三個神經元,兩個輸出。其實背後的計算不過是 所以,學會矩陣運算,是實現神經網路的第一步。相乘矩陣的相乘我們使用tf.matmul方法。x tf.variable 1.1.1.w tf....

深度學習準備(1) 張量

中文 張量 英文 tensor 數學上,把一維陣列叫向量 帶有方向的數量,線性代數有這個概念 把二維陣列叫矩陣 像矩形的乙個形狀,古代把一群士兵組成的方陣,叫陣 由於,矩形這個詞語被占用了,就發明了這個詞兒 三維,三維以上陣列,就叫張量,也叫做多維陣列 張量計算,就是多維陣列計算 另外,一般化之後的...