深度分离卷积是Xception这个模型中提出来的(不太确定,但肯定是它让这个概念为大众周知),具体来说分为两步,depthwise conv和pointwise conv,前者对输入特征图的每个通道进行卷积,然后将输出串联,后者就是大家都知道的1X1卷积,二者结合,使得参数量和计算量大幅减少,关键是效果还挺好,不服不行。因为自己想在网络中加入这一结构,于是谷歌pytorch是怎么实现的,发现结果不多,不过还是看到了想要的答案,在这个项目里https://github.com/tstandley/Xception-PyTorch/blob/master/xception.py,这是一个xception的pytorch实现,里面有关于depthwise卷积的实现,然后我发现pytorch已经支持了,至少在0.4中可以。

我就记录下这个函数吧。准确地说是类。

class torch.nn.Conv2d(in_channelsout_channelskernel_sizestride=1padding=0dilation=1groups=1,bias=True)

其中,输入输出,核的size,步长,补零都不用说了,dilation是关于卷积核的,不讲了,groups就是实现depthwise conv的关键,默认为1,意思是将输入分为一组,此时是常规卷积,当将其设为in_channels时,意思是将输入的每一个通道作为一组,然后分别对其卷积,输出通道数为k,最后再将每组的输出串联,最后通道数为in_channels*K。

最后总结下,要实现depthwise conv,就将groups设为in_channels,同时out_channels也设为与in_channels相同。

然后再加上1X1卷积,这样就符合xception的结构了。

最新文章

  1. ZooKeeper分布式集群安装
  2. JS中iframe相关的window.self,window.parent,window.top
  3. ArcGIS for Android地图控件的5大常见操作
  4. Http、tcp、Socket连接区别
  5. 逆天的IE7中,诡异的横向滚动条
  6. navicat重新系统丢失libmysql_e
  7. iOS_21团购_发送请求【点评】数据
  8. gzip 与 gunzip 语法与示例
  9. centos文件权限详解
  10. web storage 离线存储
  11. SQL ROUND() 函数
  12. Magento 2 创建 Widget
  13. cmake教程
  14. Django项目配置日志
  15. System.exit(int status)
  16. sql server always on安装
  17. Codeforces Round #394 (Div. 2) B. Dasha and friends 暴力
  18. go下载安装
  19. 原生js,插入元素
  20. Linux下Thunderbird要安装的插件

热门文章

  1. java反射专题二
  2. 关于EMGCU中的cvertern.dll无法找到的问题
  3. 使用SharedPreferences接口来实现记住密码功能
  4. 我的第一个Socket程序-SuperSocket使用入门(一)
  5. 原来windows里记事本的ansi编码就是GB2312啊,跟utf-8,unicode是不一样的。
  6. 关于android通过shell修改文件权限的学习
  7. strrpos()和strripos()函数【PHP】
  8. winform combobox绑定数据
  9. DPDK内存管理(1)(转)
  10. Linux脚本设计4——一些实用程序