PyTorch 入坑八:卷积与转置卷积
卷积
操作
略
输入输出尺寸变化
略
PyTorch实现
nn.Conv2d(in_channels,out_channels,kernel_size,stride=1.padding=0,dilation=1,groups=1,bias=True,padding_mode='zeros')
in_channels:输入通道数
out_channels:输出通道数,等价于卷积核个数
kernel_size:卷积核尺寸
stride:步长
padding:填充个数
dilation:空洞卷积大小
groups:分组卷积设置
bias:偏置,在卷积求和之后加上偏置的值
conv_layer = nn.Conv2d(3, 1, 3) # input:(i, o, size) weights:(o, i , h, w),输入为三个通道,卷积核个数1个,输出通道为1nn.init.xavier_normal_(conv_layer.weight.data) # 卷积层初始化# calculationimg_conv = conv_layer(img_tensor) # 图片进入卷积层
转置卷积
主要参考为知乎文章:
一问搞懂反卷积、转置卷积
总结如下:
当我们用神经网络生成图片的时候,经常需要将一些低分辨率的图片转换为高分辨率的图片,目前有着一些插值方法进行处理:
- 最近邻插值(Nearest neighbor interpolation)
- 双线性插值(Bi-Linear interpolation)
- 双立方插值(Bi-Cubic interpolation)
以上的这些方法都是一些插值方法,需要我们在决定网络结构的时候进行挑选。这些方法就像是人工特征工程一样,并没有给神经网络学习的余地,神经网络不能自己学习如何更好地进行插值,这个显然是不够理想的。
如果我们想要我们的网络可以学习到最好地上采样的方法,我们这个时候就可以采用转置卷积。这个方法不会使用预先定义的插值方法,它具有可以学习的参数。
关于名称
转置卷积**(Transposed Convolution)常常在一些文献中也称之为反卷积(Deconvolution)和部分跨越卷积(Fractionally-strided Convolution)**,因为称之为反卷积容易让人以为和数字信号处理中反卷积混起来,造成不必要的误解,因此下文都将称为转置卷积,并且建议各位不要采用反卷积这个称呼。
具体操作
首先对于卷积操作,以输入4x4,卷积核3x3,输出为2x2为例
一个卷积操作是一个多对一(many-to-one)的映射关系
转置卷积的核心是维护一个一对多(one-to-many)的映射关系。每一个“对”实际上都需要维护一组权值。
需要注意的是:这里的转置卷积矩阵的参数,不一定从原始的卷积矩阵中简单转置得到的,转置这个操作只是提供了转置卷积矩阵的形状而已
总结
- 转置卷积操作构建了和普通的卷积操作一样的连接关系,只不过这个是从反向方向开始连接的,我们可以用它进行上采样。
- 转置卷积矩阵的参数是可以学习的,因此我们不需要一些人为预先定义的方法。 并不是意味着我们将一些现存的卷积矩阵简单转置并且使用其转置后的值。
- 转置卷积会导致生成图像中出现棋盘效应(checkerboard artifacts),这篇文章《Deconvolution and Checkerboard Artifacts》推荐了一种上采样的操作(也就是插值操作),这个操作接在一个卷积操作后面以减少这种现象。如果你的主要目的是生成尽可能少棋盘效应的图像,那么这篇文章就值得你去阅读。
- Q:转置卷积矩阵的参数随着训练过程不断被优化,但是它是在随机初始化的基础上进行优化,还是在原始卷积矩阵的基础上进行优化;A:一般地进行随机初始化即可
PyTorch实现
nn.ConvTranspose2d
nn.ConvTranspose2d(in_channels,out_channels,kernel_size,stride=1,padding=0,output_padding=0,groups=1,bias=True,dilation=1,padding_mode='zores')
- in_channels:输入通道数
- out_channels:输出通道数
- kernel_size:卷积核尺寸
- stride:步长
- padding:填充个数
- dilation:空洞卷积大小
- groups:分组卷积设置
- bias:偏置
转置卷积的使用:
conv_layer = nn.ConvTranspose2d(3, 1, 3, stride=2) # input:(i, o, size)
nn.init.xavier_normal_(conv_layer.weight.data)
# calculation
img_conv = conv_layer(img_tensor)
效果:
PyTorch 入坑八:卷积与转置卷积相关推荐
- PyTorch框架学习十——基础网络层(卷积、转置卷积、池化、反池化、线性、激活函数)
PyTorch框架学习十--基础网络层(卷积.转置卷积.池化.反池化.线性.激活函数) 一.卷积层 二.转置卷积层 三.池化层 1.最大池化nn.MaxPool2d 2.平均池化nn.AvgPool2 ...
- PyTorch 入坑七:模块与nn.Module学习
PyTorch 入坑七 模型创建概述 PyTorch中的模块 torch模块 torch.Tensor模块 torch.sparse模块 torch.cuda模块 torch.nn模块 torch.n ...
- PyTorch入坑(一)~(三): Tensor的概念,基本操作和线性回归
PyTorch 一文入门 PyTorch 入坑一:数据类型与Tensor的概念 PyTorch数据类型 Tensor的概念 Tensor与Variable Variable Tensor Tensor ...
- PyTorch 入坑四 梯度、链式法则、计算图与反向传播
PyTorch 一文入门 PyTorch 入坑四:计算图与反向传播 导数.梯度与最优化 方向导数与梯度 最优化 复合函数求梯度 计算图 PyTorch实战 PyTorch中的动态图机制 PyTorch ...
- 对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
参考: https://zhuanlan.zhihu.com/p/28749411 https://zhuanlan.zhihu.com/p/28186857 https://blog.yani.io ...
- 卷积与转置卷积——输出特征图边长公式推导
目录 一.公式 1.卷积 2.转置卷积 二.公式推导 1.卷积公式推导 2.转置卷积公式推导 3.代码演示 一.公式 1.卷积 2.转置卷积 在Pytorch中,转置卷积层参数还含有output_pa ...
- 一文读懂 12种卷积方法(含1x1卷积、转置卷积和深度可分离卷积等)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 我们都知道卷积的重要性,但你知道深度学习领域的卷积究竟是什么,又有 ...
- 对比:空洞卷积与转置卷积(吉米王)
又是在地铁上,人到中年很无奈,每天貌似只有在地铁上的时间是属于我的-,有没有同道中人- 今天简单聊聊空洞卷积和转置卷积的区别: 空洞卷积,也有人译作扩张卷积,其实是一样的. 与普通的卷积相比,增加了一 ...
- 卷积、转置卷积、可分离卷积、分组卷积、空洞卷积的理解
文章目录 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 转置卷积 深度可分离卷积 分组卷积 空洞卷积 卷积.转置卷积.可分离卷积.分组卷积.空洞卷积的理解 这里主要是汇总一些本人觉得比较好的文 ...
最新文章
- css 横线_atom.css正式发布,从此跟CSS框架说拜拜。
- stick和stuck的区别_怎样区别“stick to”、“stick with”和“stick by”这三个表达?...
- 图论与java_算法笔记_150:图论之双连通及桥的应用(Java)
- Qt工作笔记-Qt连接Mysql数据库,检索及修改表数据
- Python提取.ipynb文件中的Python代码保存为.py文件
- 客户机无法上网,ping 127.0.0.1提示unable to contact IP driver ,error code2
- Cannot run program /usr/local/android-sdk-linux/build-tools/23.0.2/aapt: error=2, No such file or
- C++--第19课 - 专题三经典问题解析
- 计算机处理答题卡原理,基于图像处理的答题卡自动阅卷系统的设计与实现
- 【干货】ubuntu18.04+win7双系统+双硬盘安装总结
- MongoDB World 2016参会全记录
- 20200714学习笔记
- DSPE-PEG-N3 磷脂PEG叠氮
- 营销红利拐点已至,OV等厂商该如何应对?
- ffpmpeg 音量_有画面无声音 · Issue #2729 · bilibili/ijkplayer · GitHub
- c语言%u的作用,C语言中%p,%u,%lu都有什么用处
- 最新的期刊论文怎么下载?
- ESP32 HttpServer模式下 本地OTA 例程(基于ESP-IDF类似Arduino下OTAWebUpdater例程)
- 南华大学计算机学院王玉锋,喜报!南华大学和王玉锋同学双双获奖!
- CLUENER 细粒度命名实体识别baseline:BiLSTM-CRF
热门文章
- bzoj 1109: [POI2007]堆积木Klo(二维偏序)
- 设置mybb论坛后台显示为中文
- 海量数据处理的 Top K相关问题
- python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改
- jQuery Mobile中导航栏navbar的data-*选项
- Echarts数据可视化series-graph关系图,开发全解+完美注释
- A Hierarchical Reinforced Sequence Operation Method for Unsupervised Text Style Transfer
- 贺利坚老师汇编课程49笔记:call和ret
- [JavaScript]WebBrowser控件下IE版本的检测
- openlayers5学习笔记-001