1. 程式人生 > >使用更小卷積核的作用

使用更小卷積核的作用

使用更小的卷積核是當前在保證網路精度的情況下,減少引數的趨勢之一,在VGG16中,使用了3個3*3卷積核來代替7*7卷積核,使用了2個3*3卷積核來代替5*5卷積核,這樣做的主要目的是在保證具有相同感知野的條件下,提升了網路的深度,在一定程度上提升了神經網路的效果。

以下簡單地說明一下小卷積(3*3)對於5×5網路感知野相同的替代性。

這裡寫圖片描述

關於3個3×3卷積核對於7× 7 卷積的替代性思考方式同上。

接下來說明以下減少引數的作用。

對於兩個3*3卷積核,所用的引數總量為2*(3*3)*channels, 對於5*5卷積核為5*5*channels, 因此可以顯著地減少引數的數量。

下面是7*7的用三個3*3卷積核替代的情況
這裡寫圖片描述

7*7的卷積核,不是隻需要一次加權求和就成了1*1的輸出了麼。3*3的卷積核,先過濾成5*5,再用3*3卷積核就成了3*3,再一次,就成了1*1。3*3的卷積核只有9個引數,卷積3次,也就27個引數。而7*7的卷積核是49個引數,我承認引數變少了。但在加權求和的過程中,顯然前者運算步驟更多。引數少了,運算步驟卻多了,我的疑問就在這。

假設輸入的圖片大小為100*100*3,卷積操作不改變大小(padding=same)。先看用128個7*7*3的核進行卷積操作,需要100*100*7*7*3*128次乘法操作然後我們用3層3*3卷積代替上面的7*7卷積,每層仍取128個核,需要100*100*3*3*3*128*3次乘法操作,約掉相同部分,分別剩下7*7=49和3*3*3=27.顯然,用三層3*3代替一層7*7可以減少近一半的計算量。