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的批量远程管理和部署工具Fabric用法实例
Jan 23 Python
简单实现Python爬取网络图片
Apr 01 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
python根据list重命名文件夹里的所有文件实例
Oct 25 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
简单了解python代码优化小技巧
Jul 08 Python
对django中foreignkey的简单使用详解
Jul 28 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
Mar 25 Python
python os模块常用的29种方法使用详解
Jun 02 Python
python 使用递归的方式实现语义图片分割功能
Jul 16 Python
Python 保存加载mat格式文件的示例代码
Aug 04 Python
python lambda的使用详解
Feb 26 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
GD输出汉字的函数的分析
2006/10/09 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
Js获取图片原始宽高的实现代码
2016/05/17 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
微信小程序 页面跳转如何实现传值
2017/04/05 Javascript
Angular4 中常用的指令入门总结
2017/06/12 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
python实现查询苹果手机维修进度
2015/03/16 Python
Perl中著名的Schwartzian转换问题解决实现
2015/06/02 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python tkinter实现屏保程序
2019/07/30 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
人事任命书格式
2014/06/05 职场文书
2014年教研工作总结
2014/12/06 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书