对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处理RSS、ATOM模块FEEDPARSER介绍
Feb 18 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
python web框架学习笔记
May 03 Python
Python中shutil模块的学习笔记教程
Apr 04 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
tensorflow学习笔记之mnist的卷积神经网络实例
Apr 15 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 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实现的验证码文件类实例
2015/06/18 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
什么是JavaScript
2009/08/13 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
es6中reduce的基本使用方法
2019/09/10 Javascript
简单使用webpack打包文件的实现
2019/10/29 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
详解Python3中的Sequence type的使用
2015/08/01 Python
Python使用time模块实现指定时间触发器示例
2017/05/18 Python
python中实现控制小数点位数的方法
2019/01/24 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
存储过程的优缺点是什么
2015/01/10 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
旷课检讨书3000字
2014/02/04 职场文书
中学生家长评语大全
2014/04/16 职场文书
初中学生评语大全
2014/04/24 职场文书
增员口号大全
2014/06/18 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
个人师德师风自我剖析材料
2014/09/29 职场文书
升职自我推荐信范文
2015/03/25 职场文书
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB