1. 程式人生 > >卷積神經網路(CNN)之一維卷積、二維卷積、三維卷積詳解

卷積神經網路(CNN)之一維卷積、二維卷積、三維卷積詳解

由於計算機視覺的大紅大紫,二維卷積的用處範圍最廣。因此本文首先介紹二維卷積,之後再介紹一維卷積與三維卷積的具體流程,並描述其各自的具體應用。

1. 二維卷積

  • 圖中的輸入的資料維度為14×1414×14,過濾器大小為5×55×5,二者做卷積,輸出的資料維度為10×1010×10(14−5+1=1014−5+1=10)。如果你對卷積維度的計算不清楚,可以參考我之前的部落格吳恩達深度學習筆記(deeplearning.ai)之卷積神經網路(CNN)(上)

  • 上述內容沒有引入channel的概念,也可以說channel的數量為1。如果將二維卷積中輸入的channel的數量變為3,即輸入的資料維度變為(14×14×314×14×3)。由於卷積操作中過濾器的channel數量必須與輸入資料的channel數量相同

    ,過濾器大小也變為5×5×35×5×3。在卷積的過程中,過濾器與資料在channel方向分別卷積,之後將卷積後的數值相加,即執行10×1010×10次3個數值相加的操作,最終輸出的資料維度為10×1010×10。

  • 以上都是在過濾器數量為1的情況下所進行的討論。如果將過濾器的數量增加至16,即16個大小為10×10×310×10×3的過濾器,最終輸出的資料維度就變為10×10×1610×10×16。可以理解為分別執行每個過濾器的卷積操作,最後將每個卷積的輸出在第三個維度(channel 維度)上進行拼接。

  • 二維卷積常用於計算機視覺、影象處理領域。

2. 一維卷積

  • 圖中的輸入的資料維度為8,過濾器的維度為5。與二維卷積類似,卷積後輸出的資料維度為8−5+1=48−5+1=4。

  • 如果過濾器數量仍為1,輸入資料的channel數量變為16,即輸入資料維度為8×168×16。這裡channel的概念相當於自然語言處理中的embedding,而該輸入資料代表8個單詞,其中每個單詞的詞向量維度大小為16。在這種情況下,過濾器的維度由55變為5×165×16,最終輸出的資料維度仍為44。

  • 如果過濾器數量為nn,那麼輸出的資料維度就變為4×n4×n。

  • 一維卷積常用於序列模型,自然語言處理領域。

3. 三維卷積

這裡採用代數的方式對三維卷積進行介紹,具體思想與一維卷積、二維卷積相同。

  • 假設輸入資料的大小為a1×a2×a3a1×a2×a3,channel數為cc,過濾器大小為ff,即過濾器維度為f×f×f×cf×f×f×c(一般不寫channel的維度),過濾器數量為nn。

  • 基於上述情況,三維卷積最終的輸出為(a1−f+1)×(a2−f+1)×(a3−f+1)×n(a1−f+1)×(a2−f+1)×(a3−f+1)×n。該公式對於一維卷積、二維卷積仍然有效,只有去掉不相干的輸入資料維度就行。

  • 三維卷積常用於醫學領域(CT影響),視訊處理領域(檢測動作及人物行為)。