1. 程式人生 > >【深度學習基礎】張量的描述與深度學習常見張量

【深度學習基礎】張量的描述與深度學習常見張量

一些概念

深度學習中的所有資料張量的第一個軸都是樣本軸,也稱之為樣本維度。另外,深度學習模型不會同時處理整個資料集,而是將資料拆分成小批量,比如前面的案例就是每次取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.