各維度卷積神經網絡內容收錄
卷積神經網絡(CNN),通常是指用于圖像分類的2D CNN。但是,現實世界中還使用了其他兩種類型的卷積神經網絡,即1D CNN和3D CNN。
- 在1D CNN中,內核沿1個方向移動。1D CNN的輸入和輸出數據是2維的。主要用于NLP領域,時間序列數據。
-
在2D CNN中,內核沿2個方向移動。2D CNN的輸入和輸出數據是3維的。主要用于CV領域,圖像數據(在視頻的處理中,是對每一幀圖像分別利用CNN來進行識別,沒有考慮時間維度的信息)。
-
在3D CNN中,內核在3個方向上移動。3D CNN的輸入和輸出數據是4維的。通常用于3D 圖像數據(MRI,CT掃描)。
氣象數據,譬如溫度(time,level,lat,lon),既具有時間維又有空間維,那用1D還是2D呢,有的神經網絡使用1D CNN,有的2D CNN
因為是時間序列,RNN序列結構的網絡更適合,用1D CNN還是2D CNN, 關鍵在于:通過數據預處理,將數據處理成適合于1D CNN還是2D
CNN。此外,氣象數據,其有多個時間序列的子特征,因此建議用2D CNN 。
卷積中:
維度是指特征矩陣的channel數,例如7x7x256,其深度是256
通過一個1x1,卷積核個數為64的Conv層,其高和寬保持不變,channel變為64
所以,降維和升維指的是特征矩陣channel數的降低和增加
池化中:
降維是指特征圖尺寸的減小,如4x4減小為2x2
維度包含多種含義,例如在卷積層中,每一層都可以識別一些信息,越往后的信息就叫高維信息
一維CNN | Conv1D
Conv1D廣泛應用于感官數據,加速度計 數據就是其中之一。即在Conv1D中,內核沿一維滑動。考慮哪種類型的數據僅需要內核在一個維度上滑動并具有空間特性?時間序列數據,讓我們看以下數據。
來自 加速度計 的序列數據
該數據是從人戴在手臂上的 加速度計 中收集的,數據表示XYZ三個軸的加速度。一維CNN可以根據 加速度計 數據執行活動識別任務,例如人的身姿,行走,跳躍等。
此數據有2個維度:第一維是時間步長,第二維是XYZ軸上的加速度值。
下圖說明了內核如何在 加速度計 數據上移動,每行代表某個軸的時間序列加速度,內核只能沿時間軸一維移動。
內核在 加速度計 上滑動
# Keras中的Conv1D層
import kerasfrom keras.layers import Conv1Dmodel = keras.models.Sequential()model.add(Conv1D(1, kernel_size=5, input_shape = (120, 3)))model.summary()
參數input_shape(120,3)表示120個時間步,每個時間步中有3個數據點。這3個數據點是XYZ軸的加速度,參數kernel_size為5,表示內核的寬
度,內核的高度將與每個時間步中的數據點數相同。同樣,一維CNN也可用于音頻和文本數據因為我們還可以將聲音和文本表示為時間序列數據。
請參考下面的圖片,文本數據作為時間序列
二維CNN | Conv2D
在Lenet-5架構中首次引入的標準卷積神經網絡,其Conv2D通常用于圖像數據,之所以稱其為2維CNN,是因為內核在數據上沿2維滑動。
內核在圖像上滑動
使用CNN的整體優勢在于,它可以使用其內核從數據中提取空間特征,而其他網絡則無法做到。
例如:CNN可以檢測圖像中的邊緣,顏色分布等,這使得CNN網絡在圖像分類和包含空間屬性的其他類似數據中非常強大。
# 以下是在keras中添加Conv2D圖層的代碼。import kerasfrom keras.layers import Conv2Dmodel = keras.models.Sequential()model.add(Conv2D(1, kernel_size=(3,3), input_shape = (128, 128, 3)))model.summary()
參數input_shape(128、128、3)表示圖像的(高度,寬度,深度)。參數kernel_size(3,3)表示內核的(高度,寬度),并且內核深度將與圖像的深度相同。
三維CNN | Conv3D
在Conv3D中,內核按3個維度滑動,讓我們再考慮一下哪種數據類型需要內核在3維上移動?Conv3D主要用于3D圖像數據,例如磁共振成像(MRI)數據,MRI數據被廣泛用于檢查大腦,脊髓,內部器官等。甲計算機斷層掃描(CT)掃描也是三維數據,這是通過組合從身體周圍的不同角度拍攝的一系列X射線圖像創建的一個例子,我們可以使用Conv3D對該醫學數據進行分類或從中提取特征。
內核在3D數據上滑動
# 以下是在keras中添加Conv3D層的代碼。
import kerasfrom keras.layers import Conv3Dmodel = keras.models.Sequential()model.add(Conv3D(1, kernel_size=(3,3,3), input_shape = (128, 128, 128, 3)))model.summary()
這里參數Input_shape(128,128,128,3)有4個維度,3D圖像是4維數據,其中第四維代表顏色通道的數量,就像平面2D圖像具有3維一樣,其中3維代表色彩通道。參數kernel_size(3,3,3)表示內核的(高度,寬度,深度),并且內核的第4維與顏色通道相同。
了解更多知識請戳下:
@Author:懶羊羊