CNN中feature map、卷積核、卷積核的個數、filter、channel的概念解釋
參考鏈接: https://blog.csdn.net/xys430381_1/article/details/82529397
作者寫的很好,解決了很多基礎問題。
feather map理解
這個是輸入經過卷積操作后輸出的結果,一般都是二維的多張圖片,在論文圖上都是以是多張二維圖片排列在一起的(像個豆腐皮一樣),它們其中的每一個都被稱為\(feature \quad map\)
feather map 是怎么產生的
有幾個卷積核就會產生幾個\(feather \quad map\)。輸入數據經過卷積操作輸出\(feather \quad map\),從名字也可以知道(翻譯就是特征圖)這個是經過卷積核提取后得到的特征。
多個\(feather \quad map\)就意味着我們提取了多個特征值,這樣或許就可以更加准確地識別數據。
卷積核的理解
卷積核又名過濾器(\(filter\))。
每個卷積核有三個屬性:長寬深,這里一般深度不需要自己定義,深度是和輸入的數據深度相同;
有多少個卷積核就有多少個\(feather \quad map\);
例如在\(pytorch.nn.Conv2d()\)函數中:
torch.nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2)
#二維卷積層,輸入通道數1,輸出通道數16(相當於有16個filter,也就是16個卷積核),卷積核大小為5*5*1(因為輸入的通道數為1,所以這里卷積核的深度也就自動設置為1了),步長為1,零填充2圈
#經過計算,可以得到卷積輸出的圖像的大小和輸入的圖像大小是等大小的,但是深度不一樣,為28*28*16(16為深度),因為這里的padding抵消了卷積的縮小
卷積核的個數:看到很多文章,一般都說隨着網絡的加深,\(feather\quad map\)的長寬尺寸會變小,也就是卷積提取的特征越具有代表性,所以后面的卷積層數需要增加,所以卷積核的個數也是要增加的,一般是成倍增加(有的會更根據實驗的情況來具體設置)。下面的圖示很好的說明了這個:(中間的就是卷積核,這是一個三維的卷積核,是一個,所以輸出為一個\(feather \quad map\))
CNN學習過程:更新卷積核的值(也就是更新卷積核中的數值)
開始的卷積核的值是隨機的,之后每次的向后計算的過程中會得出這個圖像的類別,當然這個第一次的結果大部分都是不准確的,之后經過\(loss\quad function\)的作用,CNN會更新這些卷積核中的值,然后再來一次學習。這樣經過多次的學習,CNN就會找到卷積核的最佳參數,使得提取的特征能准確區分這些圖片,這樣也就完成了CNN的學習過程。
