对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中使用模块的教程
Apr 27 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
Python贪心算法实例小结
Apr 22 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Django中使用Whoosh进行全文检索的方法
Mar 31 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
PyQt 如何创建自定义QWidget
Mar 24 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
php 表单数据的获取代码
2009/03/10 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
$.each与$().each的区别示例介绍
2014/03/20 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
2015/04/13 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
Python中线程编程之threading模块的使用详解
2015/06/23 Python
Python读取网页内容的方法
2015/07/30 Python
详解Python 数据库 (sqlite3)应用
2016/12/07 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
2018/04/19 Python
Python实现确认字符串是否包含指定字符串的实例
2018/05/02 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
python实现按日期归档文件
2021/01/30 Python
JDK安装目录下有哪些内容
2014/08/25 面试题
外企财务年会演讲稿
2014/01/03 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
中药专业毕业自荐书范文
2014/02/08 职场文书
逃课上网检讨书
2014/02/20 职场文书
签约仪式主持词
2014/03/19 职场文书
车辆工程专业求职信
2014/04/28 职场文书
企业文化标语口号
2014/06/09 职场文书
校庆标语集锦
2014/06/25 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
领导干部学习心得体会
2016/01/23 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书