对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 socket编程实例详解
May 27 Python
Python下载懒人图库JavaScript特效
May 28 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python实现Floyd算法
Jan 03 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
基于python 凸包问题的解决
Apr 16 Python
如何在django中运行scrapy框架
Apr 22 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
Feb 06 Python
Python爬虫分析微博热搜关键词的实现代码
Feb 22 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
python 批量压缩图片的脚本
Jun 02 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
PHP生成带有雪花背景的验证码
2006/10/09 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
php实现登录页面的简单实例
2019/09/29 PHP
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
Backbone.js的一些使用技巧
2015/07/01 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
在Python的循环体中使用else语句的方法
2015/03/30 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python实现自定义函数的5种常见形式分析
2018/06/16 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
python的pstuil模块使用方法总结
2019/07/26 Python
python开头的coding设置方法
2019/08/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Python字节单位转换实例
2019/12/05 Python
python机器学习库xgboost的使用
2020/01/20 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
Django返回HTML文件的实现方法
2020/09/17 Python
Python创建自己的加密货币的示例
2021/03/01 Python
一款纯css3实现简单的checkbox复选框和radio单选框
2014/11/05 HTML / CSS
新闻传播专业求职信
2014/07/22 职场文书
刑事代理授权委托书
2014/09/17 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
Vue+Flask实现图片传输功能
2022/04/01 Vue.js