对pytorch的函数中的group参数的作用介绍


Posted in Python onFebruary 18, 2020

1.当设置group=1时:

conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=1)
conv.weight.data.size()

返回:

torch.Size([6, 6, 1, 1])

另一个例子:

conv = nn.Conv2d(in_channels=6, out_channels=3, kernel_size=1, groups=1)
conv.weight.data.size()

返回:

torch.Size([3, 6, 1, 1])

可见第一个值为out_channels的大小,第二个值为in_channels的大小,后面两个值为kernel_size

2.当设置为group=2时

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.当设置group=3时

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.当设置group=4时

conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=4)
conv.weight.data.size()

报错:

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()

否则会报错:

ValueError: out_channels must be divisible by groups

5.当设置group=in_channels时

conv = nn.Conv2d(in_channels=6, out_channels=6, kernel_size=1, groups=6)
conv.weight.data.size()

返回:

torch.Size([6, 1, 1, 1])

所以当group=1时,该卷积层需要6*6*1*1=36个参数,即需要6个6*1*1的卷积核

计算时就是6*H_in*W_in的输入整个乘以一个6*1*1的卷积核,得到输出的一个channel的值,即1*H_out*W_out。这样经过6次与6个卷积核计算就能够得到6*H_out*W_out的结果了

如果将group=3时,卷积核大小为torch.Size([6, 2, 1, 1]),即6个2*1*1的卷积核,只需要需要6*2*1*1=12个参数

那么每组计算就只被in_channels/groups=2个channels的卷积核计算,当然这也会将输入分为三份大小为2*H_in*W_in的小输入,分别与2*1*1大小的卷积核进行三次运算,然后将得到的3个2*H_out*W_out的小输出concat起来得到最后的6*H_out*W_out输出

在实际实验中,同样的网络结构下,这种分组的卷积效果是好于未分组的卷积的效果的。

以上这篇对pytorch的函数中的group参数的作用介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的静态方法与类成员方法
Feb 28 Python
python环形单链表的约瑟夫问题详解
Sep 27 Python
pycharm远程开发项目的实现步骤
Jan 20 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
基于python实现获取网页图片过程解析
May 11 Python
pycharm-professional-2020.1下载与激活的教程
Sep 21 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 Python
10个python爬虫入门实例(小结)
Nov 01 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 Python
基于python3实现倒叙字符串
Feb 18 #Python
Python日期格式和字符串格式相互转换的方法
Feb 18 #Python
Python数组并集交集补集代码实例
Feb 18 #Python
通过python检测字符串的字母
Feb 18 #Python
Python安装whl文件过程图解
Feb 18 #Python
python下载卫星云图合成gif的方法示例
Feb 18 #Python
如何使用python传入不确定个数参数
Feb 18 #Python
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
php设计模式 Proxy (代理模式)
2011/06/26 PHP
php除数取整示例
2014/04/24 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
2013/04/19 Javascript
将两个div左右并列显示并实现点击标题切换内容
2013/10/22 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
详解如何用webpack打包一个网站应用项目
2017/07/12 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
vue的列表交错过渡实现代码示例
2019/05/05 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
使用Python生成url短链接的方法
2015/05/04 Python
Php多进程实现代码
2018/05/07 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python构建基础的爬虫教学
2018/12/23 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python对象与json相互转换的方法
2019/05/07 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
python多项式拟合之np.polyfit 和 np.polyld详解
2020/02/18 Python
python中安装django模块的方法
2020/03/12 Python
Python PIL库图片灰化处理
2020/04/07 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
拓展培训心得体会
2014/01/04 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
十佳家长事迹材料
2014/08/26 职场文书
初婚初育证明范本
2014/11/24 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
旅游安全责任协议书
2016/03/22 职场文书
windows下快速安装nginx并配置开机自启动的方法
2021/05/11 Servers