我正在閱讀Szegedy等人的Inception論文:https://arxiv.org/abs/1512.00567 我很難理解如何通過用2層3x3濾波器替換單個5x5濾波器來減少計算量第3.1節)。減少卷積神經網絡中的濾波器大小
尤其是這樣一段話:
如果我們將naivly不重用相鄰網格磚之間的計算 滑動的網絡,我們會增加計算 成本。滑動該網絡可以由兩個3x3卷積 層表示,其重複使用相鄰瓦片之間的激活。
我不明白我們如何重用這些激活。
我正在閱讀Szegedy等人的Inception論文:https://arxiv.org/abs/1512.00567 我很難理解如何通過用2層3x3濾波器替換單個5x5濾波器來減少計算量第3.1節)。減少卷積神經網絡中的濾波器大小
尤其是這樣一段話:
如果我們將naivly不重用相鄰網格磚之間的計算 滑動的網絡,我們會增加計算 成本。滑動該網絡可以由兩個3x3卷積 層表示,其重複使用相鄰瓦片之間的激活。
我不明白我們如何重用這些激活。
所以首先,筆者指出這:
這樣,我們 結束了淨(9 + 9)/ 25×還原計算,在一個相對增益導致 28%通過這種分解。
他是對的:對於5x5過濾器,您必須使用25個(5*5
)個體權重。對於兩個3x3濾鏡,您必須使用9 + 9(3*3 + 3*3
)個別權重。 因此使用兩個3x3過濾器需要較少的參數。然而,你說得對,這並不意味着它需要更少的計算:乍一看,使用兩個3x3過濾器需要更多的操作。
我們來比較給定n*n
輸入的兩個選項的操作量。漫遊:對給定的輸入((n - filtersize + 1)^2
)5×5濾波器的
讓我們先從一個5x5
輸入:
1. (5 - 5 + 1)^2 = 1x1. So 1*1*25 operations = 25 operations
2. (5 - 3 + 1)^2 = 3x3. So 3*3*9 operations = 81 operations
3. (3 - 3 + 1)^2 = 1x1. So 1*1*9 operations = 9 operations
So 25 vs 90 operations. Using a single 5x5 filter is best for a 5x5 input.
接下來,6x6
輸入:
1. (6 - 5 + 1)^2 = 2x2. So 2*2*25 operations = 100 operations
2. (6 - 3 + 1)^2 = 4x4. So 4*4*9 operations = 144 operations
3. (4 - 3 + 1)^2 = 2x2. So 2*2*9 operations = 36 operations
So 100 vs 180 operations. Using a single 5x5 filter is best for a 6x6 input.
讓我們跳一個未來,8x8
輸入:
1. (8 - 5 + 1)^2 = 4x4. So 4*4*25 operations = 400 operations
2. (8 - 3 + 1)^2 = 6x6. So 6*6*9 operations = 324 operations
3. (4 - 3 + 1)^2 = 4x4. So 4*4*9 operations = 144 operations
So 400 vs 468 operations. Using a single 5x5 filter is best for a 8x8 input.
通知的格局?鑑於n*n
輸入尺寸,對於5x5
過濾器的操作有以下公式:
(n - 4)*(n - 4) * 25
而對於3x3的過濾器:
(n - 2)*(n - 2) * 9 + (n - 4) * (n - 4) * 9
所以我們繪製這些:
他們似乎相交!從上圖可以看出,從n=10
開始的兩個3x3濾波器的操作次數似乎更少!
結論:看起來在n=10
之後使用兩個3x3濾波器似乎是有效的。此外,不管n
,與單個5x5濾波器比較,需要調整兩個3x3濾波器的參數較少。
文章是一種奇怪的是,它使得它感覺像使用兩個3×3濾波器在一個5×5濾波器「明顯的」出於某種原因:
此設置明確減少了參數個數通過共享 相鄰瓷磚之間的權重。
似乎天生 再次利用平移不變性和兩層卷積架構
更換完全 連接組件。如果我們將naivly幻燈片
謝謝你的回答,我對延遲迴復表示歉意。實際上,我發現他們在論文中的意思是:他們對填充的輸入進行卷積運算,因此輸出映射的大小保持不變(輸入和輸出都是N×N)。如果考慮到這一點,那麼計算結果就會減少25/18。請用這些信息更新您的答案,我會接受它。 – MichaelSB