对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进度条实时显示处理进度的示例代码
Jan 30 Python
python爬取各类文档方法归类汇总
Mar 22 Python
python批量修改文件编码格式的方法
May 31 Python
Pandas 同元素多列去重的实例
Jul 03 Python
详解基于django实现的webssh简单例子
Jul 17 Python
详解Python发送email的三种方式
Oct 18 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
Dec 18 Python
python创造虚拟环境方法总结
Mar 04 Python
解决python3中的requests解析中文页面出现乱码问题
Apr 19 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Python拼接字符串的7种方式详解
Mar 19 Python
python 星号(*)的多种用途
Sep 21 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 Smarty date_format [格式化时间日期]
2010/03/15 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
PHP 验证码不显示只有一个小红叉的解决方法
2013/09/30 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP的Yii框架中创建视图和渲染视图的方法详解
2016/03/29 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
从javascript语言本身谈项目实战
2006/12/27 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
[06:33]DOTA2亚洲邀请赛小组赛第二日 TOP10精彩集锦
2015/01/31 DOTA
[02:23]1个至宝=115个英雄特效 最“绿”至宝拉比克“魔导师密钥”登场
2018/12/29 DOTA
Python入门篇之函数
2014/10/20 Python
Python contextlib模块使用示例
2015/02/18 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
西安当代医院管理研究院笔试题
2015/12/11 面试题
入党转预备思想汇报
2014/01/07 职场文书
《木笛》教学反思
2014/03/01 职场文书
产品设计开发计划书
2014/05/07 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python