转置卷积(deconvolution)
转置卷积是一个将低维特征转换到高维特征。为什么叫做转置卷积呢?其实就是引入了转置的思想。
- 假设我们现在有一个p维的向量Z,然后有个d维的向量X,p<d.
- 这样就会出现 Z = W·X,其中W的维度为(p,d),叫做转换矩阵.
- 现在,我们要从Z通过相似的方法来得到X,这样我们不难想到:
X= W.T · X
其中W.T的维度是(d,p),但是这两个W并不是同一个值,而是具有转置的形式而已。
上面的例子是一维向量的情况,在卷积操作中,也可以借用这个思想,从低维到高维的转变可以在形式上看成是转置操作。
- 比如我们现在对一个4 * 4的输入做3 * 3的卷积操作(m=3,stride=1,padding=0),得到一个2 * 2的特征映射
- 如果我们想对这个2 * 2特征映射进行3 * 3卷积,并反过来得到4 * 4的输出,就可以用到转置卷积:
如上图所示,对2 * 2的特征映射先做(m-1)padding
得到6 * 6的输入,然后对其进行3*3的卷积操作,从而得到4 * 4的特征映射。 同样,这个两个3 * 3的卷积参数不是一致的,都是可学习的。
微步卷积
微步卷积其实是一个转置卷积的一个特殊情况,就是卷积操作的stride ≠ 1
。因为在现实中,为了大幅度降低特征维数,卷积的步长会大于1。同样,为了大幅度提高特征维度,我们也可以用通过卷积来实现,这种卷积stride < 1
,所以叫做微步卷积。
- 如果卷积操作stride>1,其对应的转置卷积步长为1/s :就是在输入特征之间插入s - 1个0,来使得步长变’小’。
- 例如,我对一个5 * 5的输入做3 * 3的卷积操作(m=3, padding=0,但是
stride=2
),从而我得到的特征输出为2 * 2. - 现在对其进行微步卷积:
跟转置卷积一样,先对2 * 2的输入做(m-1)padding
,然后再在特征之间插入stride -1
个0,从而得到一个7 * 7的特征输入,然后对其做3 * 3 d的卷积操作,得到5 * 5的特征输出。
空洞卷积(膨胀卷积)
通常来说,对于一个卷积层,如果希望增加输出单元的感受野,一般由三个方式:
- 增加卷积核大小
- 增加层数
- 进行pooling操作
其中1和2都会增加参数量,而3会丢失特征信息。这样我们就可以引入‘空洞卷积’的概念,它不增加参数量,同时它也可以增加输出的感受野。
它主要是通过给卷积核插入空洞来增加其感受野大小,如果卷积核每两个元素之间插入d-1个空洞,那么卷积核的有效大小为:M = m + (m-1)*(d-1)
- 常见的几种卷积核就介绍到这里,望大家指正。如有问题,欢迎讨论~
来源:CSDN
作者:我是大黄同学呀
链接:https://blog.csdn.net/qq_36560894/article/details/104649664