CNN的卷積核是單層的仍是多層的?

解析:數組

通常而言,深度卷積網絡是一層又一層的。網絡

層的本質是特徵圖, 存貯輸入數據或其中間表示值。一組卷積核則是聯繫先後兩層的網絡參數表達體, 訓練的目標就是每一個卷積核的權重參數組。描述網絡模型中某層的厚度,一般用名詞通道channel數或者特徵圖feature map數。架構

不過人們更習慣把做爲數據輸入的前層的厚度稱之爲通道數(好比RGB三色圖層稱爲輸入通道數爲3),把做爲卷積輸出的後層的厚度稱之爲特徵圖數。 卷積核(filter)通常是3D多層的,除了面積參數, 好比3x3以外, 還有厚度參數H(2D的視爲厚度1). 還有一個屬性是卷積核的個數N。ide

卷積核的厚度H, 通常等於前層厚度M(輸入通道數或feature map數). 特殊狀況M > H。 卷積核的個數N, 通常等於後層厚度(後層feature maps數,由於相等因此也用N表示)。 卷積核一般從屬於後層,爲後層提供了各類查看前層特徵的視角,這個視角是自動造成的。遍歷

卷積核厚度等於1時爲2D卷積,對應平面點相乘而後把結果加起來,至關於點積運算; 卷積核厚度大於1時爲3D卷積,每片分別平面點求卷積,而後把每片結果加起來,做爲3D卷積結果;1x1卷積屬於3D卷積的一個特例,有厚度無面積, 直接把每片單個點乘以權重再相加。map

概括之,卷積的意思就是把一個區域,無論是一維線段,二維方陣,仍是三維長方塊,所有按照卷積核的維度形狀,對應逐點相乘再求和,濃縮成一個標量值也就是降到零維度,做爲下一層的一個feature map的一個點的值!channel

能夠比喻一羣漁夫坐一個漁船撒網打魚,魚塘是多層水域,每層魚兒不一樣。數據

船每次移位一個stride到一個地方,每一個漁夫撒一網,獲得收穫,而後換一個距離stride再撒,如此重複直到遍歷魚塘。 A漁夫盯着魚的品種,遍歷魚塘後該漁夫描繪了魚塘的魚品種分佈; B漁夫盯着魚的重量,遍歷魚塘後該漁夫描繪了魚塘的魚重量分佈;filter

還有N-2個漁夫,各自興趣各幹各的; 最後獲得N個特徵圖,描述了魚塘的一切!計算機

2D卷積表示漁夫的網就是帶一圈浮標的漁網,只打上面一層水體的魚; 3D卷積表示漁夫的網是多層嵌套的漁網,上中下層水體的魚兒都跑不掉; 1x1卷積能夠視爲每次移位stride,甩鉤釣魚代替了撒網;

下面解釋一下特殊狀況的 M > H:實際上,除了輸入數據的通道數比較少以外,中間層的feature map數不少,這樣中間層算卷積會累死計算機(魚塘太深,每層魚都打,須要的魚網過重了)。

因此不少深度卷積網絡把所有通道/特徵圖劃分一下,每一個卷積核只看其中一部分(漁夫A的漁網只打撈深水段,漁夫B的漁網只打撈淺水段)。這樣整個深度網絡架構是橫向開始分道揚鑣了,到最後才又融合。

這樣看來,不少網絡模型的架構不徹底是突發奇想,而是是被參數計算量逼得。特別是如今須要在移動設備上進行AI應用計算(也叫推斷), 模型參數規模必須更小, 因此出現不少減小握手規模的卷積形式, 如今主流網絡架構大都如此。

相關文章
相關標籤/搜索