对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基础教程之python消息摘要算法使用示例
Feb 10 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
Python爬豆瓣电影实例
Feb 23 Python
python实现自主查询实时天气
Jun 22 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
python实现简单http服务器功能
Sep 17 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
Dec 24 Python
python实现Virginia无密钥解密
Mar 20 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
浅谈Python类的单继承相关知识
May 12 Python
详解分布式系统中如何用python实现Paxos
May 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
一个ubbcode的函数,速度很快.
2006/10/09 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
JS array 数组详解
2009/03/22 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
JS点击动态添加标签、删除指定标签的代码
2018/04/18 Javascript
Javascript 之封装(Package)
2018/09/14 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python守护线程用法实例
2017/06/23 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python numpy格式化打印的实例
2018/05/14 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
Python3实现建造者模式的示例代码
2020/06/28 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
材料专业毕业生求职信
2014/02/26 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
爱心捐书倡议书
2015/04/27 职场文书
通用员工手册范本
2015/05/14 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
领导欢送会主持词
2015/07/06 职场文书
Vue实现导入Excel功能步骤详解
2021/07/03 Vue.js
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
php将xml转化对象的实例详解
2021/11/17 PHP