【深度學習基礎】張量的描述與深度學習常見張量
阿新 • • 發佈:2019-01-04
一些概念
深度學習中的所有資料張量的第一個軸都是樣本軸,也稱之為樣本維度。另外,深度學習模型不會同時處理整個資料集,而是將資料拆分成小批量,比如前面的案例就是每次取128個數據作為一個批量。
batch = train_images[:128]
# next
batch = train_images[128:256]
# nth
batch = train_images[128 * n: 128 * (n+1)]
在數字標號記住兩個點:
- 從0開始
- 左閉右開
這是老外喜歡的調性。
在這個場景裡,第一個軸稱之為批量軸 batch axis或者也稱之為批量維度 batch dimension
這些術語對於構建整個理解知識體系很重要。
現實世界的資料張量描述
這裡給出的幾個例子,可以作為參考:
- 向量資料:2D張量,形狀:
(samples, features)
- 時間序列資料:3D張量,形狀:
(samples, timesteps, features)
- 影象:4D張量,形狀為:
(samples, height, width, channels)
或者(samples, channels, height, width)
向量資料
每一條/行就是一個數據,第一個軸是樣本軸,第二個軸是特徵軸。一般的CSV資料都是這類。
時間序列或序列資料
這裡給出的例子極好,以股票資料為例,每一分鐘可以記錄三個資料:
- 股票當前價格
- 前一分鐘最高價
- 前一分鐘最低價
所以每一分鐘的資料可以編碼為一個3D向量,注意這不是3D張量。一天下來,交易日有390分鐘,可以得到一個2D張量,形狀為(390,3)。一年250天則可以儲存在一個形狀為(250, 390,3)的3D張量中。一天的股票資料即為一個樣本。
第一個軸是樣本軸,第二個軸是時間軸,第三個軸是特徵軸,這是約定的慣例。
影象資料
這個很熟悉的,一張圖就是一個樣本,樣本軸一定是第一個;只是在樣本內軸的劃分有兩種:
- 通道在前
- 通道在後
其中Tensorflow用的是通道在後的設定,而Keras支援兩種設定。
END.