Pytorch实现各种2d卷积示例


Posted in Python onDecember 30, 2019

普通卷积

使用nn.Conv2d(),一般还会接上BN和ReLu

参数量NNCin*Cout+Cout(如果有bias,相对来说表示对参数量影响很小,所以后面不考虑)

class ConvBNReLU(nn.Module):

 def __init__(self, C_in, C_out, kernel_size, stride, padding, affine=True):
  super(ConvBNReLU, self).__init__()
  self.op = nn.Sequential(
   nn.Conv2d(C_in, C_out, kernel_size, stride=stride, padding=padding, bias=False),
   nn.BatchNorm2d(C_out, eps=1e-3, affine=affine),
   nn.ReLU(inplace=False)
  )

 def forward(self, x):
  return self.op(x)

深度可分离卷积depthwise separable convolution

卷积操作可以分为NN 的Depthwise卷积(不改变通道数)和11的Pointwise卷积(改变为输出通道数),同样后接BN,ReLU。参数量明显减少

参数量:

NNCin+Cin11*Cout

class SepConv(nn.Module):
 
 def __init__(self, C_in, C_out, kernel_size, stride, padding, affine=True):
  super(SepConv, self).__init__()
  self.op = nn.Sequential(
   nn.ReLU(inplace=False),
   nn.Conv2d(C_in, C_in, kernel_size=kernel_size, stride=stride, padding=padding, groups=C_in, bias=False),
   nn.Conv2d(C_in, C_out, kernel_size=1, padding=0, bias=False),
   nn.BatchNorm2d(C_out, eps=1e-3, affine=affine)
   )
 def forward(self, x):
  return self.op(x)

空洞卷积dilated convolution

空洞卷积(dilated convolution)是针对图像语义分割问题中下采样会降低图像分辨率、丢失信息而提出的一种卷积思路。利用添加空洞扩大感受野。

参数量不变,但感受野增大(可结合深度可分离卷积实现)

class DilConv(nn.Module):
  
 def __init__(self, C_in, C_out, kernel_size, stride, padding, dilation, affine=True):
  super(DilConv, self).__init__()
  self.op = nn.Sequential(
   nn.ReLU(inplace=False),
   nn.Conv2d(C_in, C_in, kernel_size=kernel_size, stride=stride, padding=padding, dilation=dilation, groups=C_in, bias=False),
   nn.Conv2d(C_in, C_out, kernel_size=1, padding=0, bias=False),
   nn.BatchNorm2d(C_out, eps=1e-3, affine=affine),
   )

 def forward(self, x):
  return self.op(x)

Identity

这个其实不算卷积操作,但是在实现跨层传递捷径

class Identity(nn.Module):

 def __init__(self):
  super(Identity, self).__init__()

 def forward(self, x):
  return x

以上这篇Pytorch实现各种2d卷积示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python列表操作实例
Jan 14 Python
Python多进程multiprocessing用法实例分析
Aug 18 Python
完美解决在oj中Python的循环输入问题
Jun 25 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
利用nohup来开启python文件的方法
Jan 14 Python
python频繁写入文件时提速的方法
Jun 26 Python
Python适配器模式代码实现解析
Aug 02 Python
django实现支付宝支付实例讲解
Oct 17 Python
python pygame实现挡板弹球游戏
Nov 25 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
python使用shell脚本创建kafka连接器
Apr 29 Python
Python面向对象之多态原理与用法案例分析
Dec 30 #Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 #Python
python面向对象之类属性和类方法案例分析
Dec 30 #Python
基于Python执行dos命令并获取输出的结果
Dec 30 #Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 #Python
python实现修改固定模式的字符串内容操作示例
Dec 30 #Python
python基于celery实现异步任务周期任务定时任务
Dec 30 #Python
You might like
PHP VS ASP
2006/10/09 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
php中curl使用指南
2015/02/05 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
创建公共调用 jQuery Ajax 带返回值
2012/08/01 Javascript
javascript时区函数介绍
2012/09/14 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
微信小程序开发(一) 微信登录流程详解
2017/01/11 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python切换hosts文件代码示例
2013/12/31 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
什么是.net的Remoting技术
2016/07/08 面试题
房地产开发计划书
2014/01/10 职场文书
教师求职自荐信
2014/03/09 职场文书
小学数学课题方案
2014/06/15 职场文书
中队活动总结
2014/08/27 职场文书
2014年除四害工作总结
2014/12/06 职场文书
同事欢送会致辞
2015/07/31 职场文书
商务宴会祝酒词
2015/08/11 职场文书
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android