对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中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
Python和GO语言实现的消息摘要算法示例
Mar 10 Python
Python获取某一天是星期几的方法示例
Jan 17 Python
python 基础教程之Map使用方法
Jan 17 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
python使用matplotlib:subplot绘制多个子图的示例
Sep 24 Python
python按照list中字典的某key去重的示例代码
Oct 13 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
python中slice参数过长的处理方法及实例
Dec 15 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 JSON 数据解析代码
2010/05/26 PHP
php实现的简单检验登陆类
2015/06/18 PHP
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
判断js数据类型的函数实例详解
2019/05/23 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
Python3基础之基本数据类型概述
2014/08/13 Python
初学Python函数的笔记整理
2015/04/07 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python对execl 处理操作代码
2020/06/22 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
python中time包实例详解
2021/02/02 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
NFL Game Pass欧洲:在线观看NFL比赛直播和点播,以高清质量播放
2018/08/30 全球购物
荷兰最大的鞋子、服装和运动折扣店:Bristol
2021/01/07 全球购物
报到证丢失证明
2014/01/11 职场文书
十八大闭幕感言
2014/01/22 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
社会实践的活动方案
2014/08/22 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android