nn.Conv2d中groups參數的理解 python

因爲需要把yolo網絡改成mobilenet,涉及到卷積層的group參數,所以來好好理解一下。

Convolution 層的參數中有一個group參數,其意思是將對應的輸入通道與輸出通道數進行分組, 默認值爲1, 也就是說默認輸出輸入的所有通道各爲一組。 比如輸入數據大小爲90x100x100x32,通道數32,要經過一個3x3x48的卷積,group默認是1,就是全連接的卷積層。

如果group是2,那麼對應要將輸入的32個通道分成2個16的通道,將輸出的48個通道分成2個24的通道。對輸出的2個24的通道,第一個24通道與輸入的第一個16通道進行全卷積,第二個24通道與輸入的第二個16通道進行全卷積。

極端情況下,輸入輸出通道數相同,比如爲24,group大小也爲24,那麼每個輸出卷積核,只與輸入的對應的通道進行卷積。

https://blog.csdn.net/gzj2013/article/details/84884353

比如input_size = [1,6,1,1],   如果你令conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, stride=1, dilation: 空洞卷積; padding=0, groups=?, bias=False),則當groups=1時,即爲默認的卷積層,則conv.weight.data.size爲[6,6,1,1],實際上共有6 * 6=36個參數;若group=3時,則每組計算只有out_channel/groups = 2個channel參與,故每一組卷積層的參數大小爲[6,2,1,1],每一組共有6 * 2=12個參數,相當於每一組被重複用了3次(即group)次,最後再concat.

https://blog.csdn.net/u010216120/article/details/83545213

groups 決定了將原輸入分爲幾組,而每組channel重用幾次,由out_channels/groups計算得到,這也說明了爲什麼需要 groups能供被 out_channelsin_channels整除。

https://www.aiuai.cn/aifarm618.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章