對(duì)pytorch的函數(shù)中的group參數(shù)的作用介紹
1.當(dāng)設(shè)置group=1時(shí):
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=1) conv.weight.data.size()
返回:
torch.Size([6, 6, 1, 1])
另一個(gè)例子:
conv = nn.Conv2d(in_channels=6, out_channels=3, kernel_size=1, groups=1) conv.weight.data.size()
返回:
torch.Size([3, 6, 1, 1])
可見第一個(gè)值為out_channels的大小,第二個(gè)值為in_channels的大小,后面兩個(gè)值為kernel_size
2.當(dāng)設(shè)置為group=2時(shí)
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=2) conv.weight.data.size()
返回:
torch.Size([6, 3, 1, 1])
3.當(dāng)設(shè)置group=3時(shí)
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=3) conv.weight.data.size()
返回:
torch.Size([6, 2, 1, 1])
4.當(dāng)設(shè)置group=4時(shí)
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=4) conv.weight.data.size()
報(bào)錯(cuò):
ValueError: in_channels must be divisible by groups
groups的值必須能整除in_channels
注意:
同樣也要求groups的值必須能整除out_channels,舉例:
conv = nn.Conv2d(in_channels=6, out_channels=3, kernel_size=1, groups=2) conv.weight.data.size()
否則會(huì)報(bào)錯(cuò):
ValueError: out_channels must be divisible by groups
5.當(dāng)設(shè)置group=in_channels時(shí)
conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=6) conv.weight.data.size()
返回:
torch.Size([6, 1, 1, 1])
所以當(dāng)group=1時(shí),該卷積層需要6*6*1*1=36個(gè)參數(shù),即需要6個(gè)6*1*1的卷積核
計(jì)算時(shí)就是6*H_in*W_in的輸入整個(gè)乘以一個(gè)6*1*1的卷積核,得到輸出的一個(gè)channel的值,即1*H_out*W_out。這樣經(jīng)過6次與6個(gè)卷積核計(jì)算就能夠得到6*H_out*W_out的結(jié)果了
如果將group=3時(shí),卷積核大小為torch.Size([6, 2, 1, 1]),即6個(gè)2*1*1的卷積核,只需要需要6*2*1*1=12個(gè)參數(shù)
那么每組計(jì)算就只被in_channels/groups=2個(gè)channels的卷積核計(jì)算,當(dāng)然這也會(huì)將輸入分為三份大小為2*H_in*W_in的小輸入,分別與2*1*1大小的卷積核進(jìn)行三次運(yùn)算,然后將得到的3個(gè)2*H_out*W_out的小輸出concat起來得到最后的6*H_out*W_out輸出
在實(shí)際實(shí)驗(yàn)中,同樣的網(wǎng)絡(luò)結(jié)構(gòu)下,這種分組的卷積效果是好于未分組的卷積的效果的。
以上這篇對(duì)pytorch的函數(shù)中的group參數(shù)的作用介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用python實(shí)現(xiàn)unix2dos和dos2unix命令的例子
今天小編就為大家分享一篇使用python實(shí)現(xiàn)unix2dos和dos2unix命令的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08如何優(yōu)雅地處理Django中的favicon.ico圖標(biāo)詳解
默認(rèn)情況下,瀏覽器訪問一個(gè)網(wǎng)站的時(shí)候,同時(shí)還會(huì)向服務(wù)器請(qǐng)求"/favicon.ico"這個(gè)URL,目的是獲取網(wǎng)站的圖標(biāo),下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地處理Django中favicon.ico圖標(biāo)的相關(guān)資料,需要的朋友可以參考下2018-07-07利用QT寫一個(gè)極簡(jiǎn)單的圖形化Python鬧鐘程序
這篇文章主要介紹了利用QT寫一個(gè)極簡(jiǎn)單的圖形化Python鬧鐘程序,核心代碼只有25行,顯示屏幕提示而沒有鬧鈴聲音,需要的朋友可以參考下2015-04-04