第2章-神经网络的数学基础(笔记)
張量是矩陣向任意維度的推廣[注意,張量的維度(dimension)通常叫做軸(axis)].
不要把 5D 向量和 5D 張量弄混! 5D 向量只有一個軸,沿著軸有 5 個維度,而 5D 張量有 5 個軸(沿著每個軸可能有任意個維度)。
?
?
2.2.7 數據批量的概念
通常來說,深度學習中所有數據張量的第一個軸(0 軸,因為索引從 0 開始)都是樣本軸(samples axis,有時也叫樣本維度)。在 MNIST 的例子中,樣本就是數字圖像。
此外,深度學習模型不會同時處理整個數據集,而是將數據拆分成小批量。具體來看,下面是 MNIST 數據集的一個批量,批量大小為 128。
batch = train_images[:128]
然后是下一個批量。
batch = train_images[128:256]
然后是第 n 個批量。
batch = train_images[128 * n:128 * (n + 1)]
對于這種批量張量,第一個軸(0 軸)叫作批量軸(batch axis)或批量維度(batch dimension)。
在使用 Keras 和其他深度學習庫時,你會經常遇到這個術語。
?
>>> x = np.array([[[5, 78, 2, 34, 0],
?[6, 79, 3, 35, 1],
?[7, 80, 4, 36, 2]],
?[[5, 78, 2, 34, 0],
?[6, 79, 3, 35, 1],
?[7, 80, 4, 36, 2]],
?[[5, 78, 2, 34, 0],
?[6, 79, 3, 35, 1],
?[7, 80, 4, 36, 2]]])
>>> x.ndim?
3
將多個 3D 張量(3D張量中每個元素是二維矩陣)組合成一個數組,可以創建一個 4D 張量,以此類推。深度學習處理的一般
是 0D 到 4D 的張量,但處理視頻數據時可能會遇到 5D 張量。
?
?
2.2.8 現實世界中的數據張量
我們用幾個你未來會遇到的示例來具體介紹數據張量。你需要處理的數據幾乎總是以下類
別之一。
向量數據:2D 張量,形狀為 (samples, features)。
時間序列數據或序列數據:3D 張量,形狀為 (samples, timesteps, features)。
圖像:4D 張量,形狀為 (samples, height, width, channels) 或 (samples, channels,?
height, width)。
視頻:5D 張量,形狀為 (samples, frames, height, width, channels) 或 (samples,?
frames, channels, height, width)。
?
?
2.2.11 圖像數據
圖像通常具有三個維度:高度、寬度和顏色深度。雖然灰度圖像(比如 MNIST 數字圖像)只有一個顏色通道,因此可以保存在 2D 張量中,但按照慣例,圖像張量始終都是 3D 張量,灰度圖像的彩色通道只有一維。因此,如果圖像大小為 256×256,那么 128 張灰度圖像組成的批量可以保存在一個形狀為 (128, 256, 256, 1) 的張量中,而 128 張彩色圖像組成的批量則可以保存在一個形狀為 (128, 256, 256, 3) 的張量中(見圖 2-4)。
圖像張量的形狀有兩種約定:
通道在后(channels-last)的約定(在 TensorFlow 中使用)和通道在前(channels-first)的約定(在 Theano 中使用)。
Google 的 TensorFlow 機器學習框架將顏色深度軸放在最后:(samples, height, width, color_depth)。
與此相反,Theano將圖像深度軸放在批量軸之后:(samples, color_depth, height, width)。
如果采用 Theano 約定,前面的兩個例子將變成 (128, 1, 256, 256) 和 (128, 3, 256, 256)。
Keras 框架同時支持這兩種格式。
總結
以上是生活随笔為你收集整理的第2章-神经网络的数学基础(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第1章-什么是深度学习(笔记)
- 下一篇: 淘宝上的所有cuda书籍调研