对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实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
python实现百万答题自动百度搜索答案
Jan 16 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
python删除文本中行数标签的方法
May 31 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
Python批量生成特定尺寸图片及图画任意文字的实例
Jan 30 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
接收键盘指令的脚本
2006/06/26 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
node.js中的fs.utimes方法使用说明
2014/12/15 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
详解Vue之事件处理
2020/07/10 Javascript
vue中v-model对select的绑定操作
2020/08/31 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
python中requests模块的使用方法
2015/04/08 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
python opencv实现图像配准与比较
2021/02/09 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
C/C++有关内存的思考题
2015/12/04 面试题
初中生学习的自我评价
2013/11/14 职场文书
环境工程专业自荐信范文
2014/03/18 职场文书
小学社会实践活动总结
2014/07/03 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
毕业设计致谢语
2015/05/14 职场文书
拖欠货款起诉状
2015/05/20 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python