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


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

1. 二維卷積

  • 圖中的輸入的數據維度為\(14\times 14\),過濾器大小為\(5\times 5\),二者做卷積,輸出的數據維度為\(10\times 10\)\(14-5+1=10\))。如果你對卷積維度的計算不清楚,可以參考我之前的博客吳恩達深度學習筆記(deeplearning.ai)之卷積神經網絡(CNN)(上)

  • 上述內容沒有引入channel的概念,也可以說channel的數量為1。如果將二維卷積中輸入的channel的數量變為3,即輸入的數據維度變為(\(14\times 14\times 3\))。由於卷積操作中過濾器的channel數量必須與輸入數據的channel數量相同,過濾器大小也變為\(5\times 5\times 3\)。在卷積的過程中,過濾器與數據在channel方向分別卷積,之后將卷積后的數值相加,即執行\(10\times 10\)次3個數值相加的操作,最終輸出的數據維度為\(10\times 10\)

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

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

2. 一維卷積

  • 圖中的輸入的數據維度為8,過濾器的維度為5。與二維卷積類似,卷積后輸出的數據維度為\(8-5+1=4\)

  • 如果過濾器數量仍為1,輸入數據的channel數量變為16,即輸入數據維度為\(8\times 16\)。這里channel的概念相當於自然語言處理中的embedding,而該輸入數據代表8個單詞,其中每個單詞的詞向量維度大小為16。在這種情況下,過濾器的維度由\(5\)變為\(5\times 16\),最終輸出的數據維度仍為\(4\)

  • 如果過濾器數量為\(n\),那么輸出的數據維度就變為\(4\times n\)

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

3. 三維卷積

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

  • 假設輸入數據的大小為\(a_1\times a_2\times a_3\),channel數為\(c\),過濾器大小為\(f\),即過濾器維度為\(f\times f\times f\times c\)(一般不寫channel的維度),過濾器數量為\(n\)

  • 基於上述情況,三維卷積最終的輸出為\((a_1-f+1)\times (a_2-f+1)\times (a_3-f+1)\times n\)。該公式對於一維卷積、二維卷積仍然有效,只有去掉不相干的輸入數據維度就行。

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM