首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转置卷积和普通卷积特征图contact问题?

转置卷积和普通卷积特征图contact问题?

提问于 2020-07-07 08:21:20
回答 0关注 0查看 380

在ssd网络vgg部分添加了转置卷积,但是程序报错,错误如下:TypeError: expected Tensor as element 0 in argument 0, but got ConvTranspose2d 代码部分如图所示,是因为维度对不上吗

回答

成为首答用户。去 写回答
相关文章
卷积,特征图,转置卷积和空洞卷积的计算细节
最近在做姿态估计的项目,在定制和实现卷积网络的时候发现自己对里面的一些计算细节还不够了解,所以整理了该文章,内容如下:
用户1332428
2018/07/26
2.2K0
卷积,特征图,转置卷积和空洞卷积的计算细节
卷积与转置卷积
转置卷积又称微步卷积(“微步”的含义指:新的步长为1,而之前的步长为2,使得转置卷积的滑窗处理相比较卷积的“小”。),可以视作传统卷积操作的一种“逆向”传递过程;并且,转置卷积受“正向”卷积的参数约束,即步长stride和零填充(zero-padding)。下面给出stride=1和padding=0、stride=1和padding=1、stride=2和padding=0、stride=2和padding=1的卷积和转置卷积例子。
全栈程序员站长
2022/06/24
6450
卷积与转置卷积
Pytorch 转置卷积
卷积不会增大输入的高和宽,通常要么不变,要么减半。而转置卷积则可以用来增大输入高宽。
全栈程序员站长
2022/06/24
2.3K0
Pytorch 转置卷积
转置卷积详解
  前面文章对卷积做了讲解,感觉既然重新整理,就将系列概念整体做个梳理,也算是将自己知道的所有东西拿来献丑把。   转置卷积(Transposed Convolution)是后来的叫法,一开始大家都是称逆卷积/反卷积(Deconvolution),这个概念是在图像分割任务中被提出来的,图像分割需要逐像素的操作,对每一个像素做一个分割,将其归类到不同的物体当中。   这个任务大家很自然的想要使用卷积神经网络来完成,那就得先使用卷积神经网络提取特征,但是卷积神经网络中的两大主要构件,卷积层和下采样层会使得图像的尺寸不断缩小。这个就与逐像素的分类不符,因为逐像素分割的话是需要输出和输入大小是一致的。   针对这个问题,有人提出了先使用卷积核下采样层逐层的提取特征,然后通过上采样再将特征图逐渐的恢复到原图的尺寸。而这个上采样一开始就是通过反卷积来实现的。如果说卷积核下采样的过程特征图是变小的,那么上采样之后特征图应该变大。   我们应该熟悉卷积的输出尺寸公式 o u t = ( F − K + 2 P ) / s + 1 out=(F-K+2P)/s+1 out=(F−K+2P)/s+1,其中F表示输入特征图的尺寸,K表示卷积核的尺寸,P表示padding,S表示卷积的步长。我们都通过这个公式来计算卷积的输出特征图尺寸。举例来说明,一个4×4的输入特征图,卷积核为3×3,如果不使用paddng,步长为1,则带入计算 o u t = ( 4 − 3 ) / 1 + 1 out=(4-3)/1+1 out=(4−3)/1+1为2。   我们已经在im2col算法的介绍中讲解了卷积的实现,实际上这个步骤是通过两个矩阵的乘法来完成的,我们不妨记为 y = C x y=Cx y=Cx,如果要上采样,我们希望给输出特征图乘一个参数矩阵,然后把尺寸还原回去,根据数学知识,我们给特征图矩阵 y y y左乘一个{C^T},就能得到 C T y = C T C x C^Ty=C^TCx CTy=CTCx, C C C的列数等于 x x x的行数, C T C C^TC CTC的行数和列数都等于x的行数,乘完之后,得到的结果与 x x x形状相同。这就是转置卷积名字的来源。有一些工作确实是这样实现的。   我们也能很自然的得出结论,我们不需要给输出特征图左乘 C T C^T CT,显然只要和这个矩阵形状相同,输出的结果就和原特征图尺寸相同,而且这个操作同样可以使用卷积来实现,那我们只要保证形状一致,然后参数我们可以自己训练,这样尺寸的问题解决了,而且特征的对应也有了,是可以训练的,一举两得。 im2col讲解的内容,卷积是 ( C o u t , C i n ∗ K h ∗ K w ) (C_{out},C_{in}*K_h*K_w) (Cout​,Cin​∗Kh​∗Kw​)的卷积核乘 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图,得到 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)的结果。现在对卷积核做一个转置 ( C i n ∗ K h ∗ K w , C o u t ) (C_{in}*K_h*K_w,C_{out}) (Cin​∗Kh​∗Kw​,Cout​)乘 ( C o u t , H N ∗ W N ) (C_{out},H_N*W_N) (Cout​,HN​∗WN​)得到一个 ( C i n ∗ K h ∗ K w , H N ∗ W N ) (C_{in}*K_h*K_w,H_N*W_N) (Cin​∗Kh​∗Kw​,HN​∗WN​)的特征图。   除了以上内容这里还有一点其他需要补充的东西,比如在caffe中除了im2col函数之外,还有一个函数是col2im,也就是im2col的逆运算。所以对于上面的结果caffe是通过col2im来转换成特征图的。但是col2im函数对于im2col只是形状上的逆函数,事实上,如果对于一个特征图先执行im2col再执行col2im得到的结果和原来是不相等的。   而在tensorflow和pytorch中,这一点是有差异的,两者是基于特征图膨胀实现的转置卷积操作,两者是是通过填充来进行特征图膨胀的,之后可能还会有一个crop操作。之所以需要填充,是因为想要直接通过卷积操作来实现转置卷积,干脆填充一些值,这样卷积出来的特征图尺寸自然就更大。   但是两者从运算上来讲都无法对原卷积进行复原,只是进行了形状复原而已。   到了最后就可以讨论形状的计算了,转置卷积是卷积的形状逆操作,所以形状计算就是原来计算方式的逆函数。 o u t = ( F − K + 2 P ) / s + 1 out
全栈程序员站长
2022/06/24
8530
转置卷积详解
语义分割和转置卷积
分割对图像分析是必不可少的。语义分割描述了每个像素与类别标记的关联过程,(例如:花朵、人物、道路、天空、海洋、或者汽车)。
AI研习社
2018/07/26
8080
语义分割和转置卷积
转置卷积学习笔记
在语义分割的预测过程中,我们需要对每个像素进行目标检测,那就出现一个问题,我们先是对输入的图像通过二维卷积神经网络进行不断的高宽减半的压缩,最后得到一个预测,但我们如果需要对每个像素进行识别,就要通过预测反推每个像素里面的类别。举个例子,我们对猫狗识别时,我们不仅仅要识别猫在哪,还要将关于猫的每个像素给识别出来,这时就要求我们需要用到转置卷积。转置卷积可以使得图像不断变大,使得我们生成的图像和原始图像具有相同大小,那么我们就能够狠方便的进行语义分割。
全栈程序员站长
2022/06/24
5190
转置卷积学习笔记
一文搞懂反卷积,转置卷积
本文翻译自《Up-sampling with Transposed Convolution》,这篇文章对转置卷积和反卷积有着很好的解释,这里将其翻译为中文,以飨国人。如有谬误,请联系指正。转载请注明出处。
全栈程序员站长
2022/06/24
9230
一文搞懂反卷积,转置卷积
卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)
传统的CNN网络只能给出图像的LABLE,但是在很多情况下需要对识别的物体进行分割实现end to end,然后FCN出现了,给物体分割提供了一个非常重要的解决思路,其核心就是卷积与反卷积,所以这里就详细解释卷积与反卷积。
全栈程序员站长
2022/06/24
2.2K0
卷积神经网络CNN(1)——图像卷积与反卷积(后卷积,转置卷积)
[转载]对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
在可分离卷积(separable convolution)中,通常将卷积操作拆分成多个步骤。而在神经网络中通常使用的就是深度可分离卷积(depthwise separable convolution)。 举个例子,假设有一个3×3大小的卷积层,其输入通道为16、输出通道为32。 那么一般的操作就是用32个3×3的卷积核来分别同输入数据卷积,这样每个卷积核需要3×3×16个参数,得到的输出是只有一个通道的数据。之所以会得到一通道的数据,是因为刚开始3×3×16的卷积核的每个通道会在输入数据的每个对应通道上做卷积,然后叠加每一个通道对应位置的值,使之变成了单通道,那么32个卷积核一共需要(3×3×16)×32 =4068个参数。
marsggbo
2018/10/10
3.6K0
抽丝剥茧,带你理解转置卷积(反卷积)
转置卷积又叫反卷积、逆卷积。不过转置卷积是目前最为正规和主流的名称,因为这个名称更加贴切的描述了卷积的计算过程,而其他的名字容易造成误导。在主流的深度学习框架中,如TensorFlow,Pytorch,Keras中的函数名都是conv_transpose。所以学习转置卷积之前,我们一定要弄清楚标准名称,遇到他人说反卷积、逆卷积也要帮其纠正,让不正确的命名尽早的淹没在历史的长河中。
全栈程序员站长
2022/06/24
1.6K0
抽丝剥茧,带你理解转置卷积(反卷积)
对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
大家好,又见面了,我是你们的朋友全栈君。 参考: https://zhuanlan.zhihu.com/p/28749411 https://zhuanlan.zhihu.com/p/2
全栈程序员站长
2022/06/24
8260
对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
如何理解转置卷积(transposed convolution)
转置卷积也被称为反卷积,常被用用于CNN中的上采样操作,比如分割任务,或GAN网络中。反卷积并不是常规卷积的完全逆操作,反卷积也起不到根据输出特征以及对应的卷积核,恢复原始输出的作用,它最多的作用就是有可学习参数的上采样操作,仅此而已。 同时,反卷积操作并没有把正向卷积输出,对应的卷积核拿过来做转置使用,而是多了几个卷积核而已。 此外,即便是把正向卷积输出对应的卷积核拿过做反卷积,它也恢复不出来原来的参数,恢复原来参数这种操作看起来并没有太大意义,因为只是想做上采样而已。 这里与常规卷积的区别主要体现在:
chaibubble
2021/02/04
1.7K0
PyTorch中的转置卷积详解
转置卷积,学名transpose convolution,在tf和torch里都叫这个。 有时在论文里可以看到别人叫它deconvolution(反卷积),但这个名词不合适。 因为转置卷积并非direct convolution的逆运算(reverse),并不能还原出原张量,所以叫它逆卷积是错的。 只是从形状上看,其结果的形状等同于原张量的形状。
全栈程序员站长
2022/06/24
1.8K0
PyTorch中的转置卷积详解
卷积与反卷积关系超详细说明及推导(反卷积又称转置卷积、分数步长卷积)
  以 CNN 为代表的卷积神经网络在图像的相关领域得到了较为长足的发展。在 CNN 中卷积实际分类两大类,一种是卷积,另一种是转置卷积(transposed convolutional ),或者称为分数步长卷积( fractionally strided convolutional layers),亦或者是反卷积(deconvolution)。
全栈程序员站长
2022/06/24
3.1K0
卷积与反卷积关系超详细说明及推导(反卷积又称转置卷积、分数步长卷积)
由浅入深CNN中卷积层与转置卷积层的关系
导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷积层,在最近提出的卷积神经网络中越来越常见了,特别是在对抗生成神经网络(GAN)中,生成器网络中上采样部分就出现了转置卷积层,用于恢复减少的维数。那么,转置卷积层和正卷积层的关系和区别是什么呢,转置卷积层实现过程又是什么样的呢,笔者根据最近的预研项目总结出本文。
forrestlin
2018/11/16
4K0
由浅入深CNN中卷积层与转置卷积层的关系
轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」
在CNN中,转置卷积是一种上采样(up-sampling)的常见方法.如果你不清楚转置卷积是怎么操作的,那么就来读读这篇文章吧.
全栈程序员站长
2022/06/24
2.3K0
轻松理解转置卷积(transposed convolution)或反卷积(deconvolution)「建议收藏」
torch.nn.ConvTranspose2d 转置卷积
函数原型:torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, padding=0, output_padding=0, groups=1, bias=True, dilation=1, padding_mode='zeros')其中,各参数的含义如下:in_channels(int):输入张量的通道数out_ch
狼啸风云
2020/07/14
2.3K0
卷积神经网络学习路线(四)| 如何减少卷积层计算量,使用宽卷积的好处及转置卷积中的棋盘效应?
这是卷积神经网络的学习路线的第四篇文章,这篇文章主要为大家介绍一下如何减少卷积层的计算量,使用宽卷积的好处以及转置卷积中的棋盘效应。
BBuf
2019/12/12
1.5K0
卷积神经网络学习路线(四)| 如何减少卷积层计算量,使用宽卷积的好处及转置卷积中的棋盘效应?
基于pytorch可视化alexnet卷积核和特征图
之前一篇我们使用paddle paddle实现了alexnet, 今天我们来对alexnet进行可视化,具体看下每个卷积层的卷积到底是个什么样的,以加深对深度卷积网络的理解。这次我们使用pytorch实现的alexnet实现作为网络,使用pretrain的权重是pytorch官方提供的。
用户7680342
2020/11/13
4.7K0
深入理解神经网络中的反(转置)卷积
本文主要是把之前在知乎上的回答[1,2]重新整理了一下并且加了一些新的内容。对于像素级的任务,在decoder部分都会用一些常规操作去逐步恢复feature map的空间大小,而常用的模块有反卷积[3,5]、上采样+卷积和subpixel[4]操作等等。
BBuf
2020/04/15
1.8K0
深入理解神经网络中的反(转置)卷积

相似问题

多层卷积和两层卷积得到的精确度相同?

099

关于attention与时间卷积的不定长问题?

4852

Tensorflow2.0卷积时报错?

13.6K

卷积神经网络为什么适合图像处理?

1293

怎样获取网络子层中所有的卷积层?

0105
相关问答用户
擅长3个领域
擅长4个领域
萃橙科技 | 合伙人擅长4个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档