对A guide to convolution arithmetic for deep 的第四章部分翻译,纯属个人学习的。

前面大部分都讲的是卷积操作,包括卷积核、步长、pad,(pad表示一个维度左右各补充几个0,总共是2*pad的补充)

这几个怎么影响输出的size的,公式:

i是原尺寸,p是补充的pad,k是卷积核的长,s是步长,are you ok? 哈哈

转置卷积

图解:

           转置卷积

下面这个才是重点

转置卷积

转置卷积

基本意思就是,有一个输入4*4的图片,暂定为一个通道,然后flattened拉平成一行,shape是(16,)用X表示,然后将3*3的卷积核表达成一个稀疏矩阵C,其中的值没有变化。原矩阵:

[[w00,w01,w02],

[w10,w11,w12],

[w20,w21,w22]

]

然后是CX=result,再reshape成2*2,注意图2.1。这样在反向传播时用的就是CT(C的转置),很容易得到。

转置卷积——也称为分阶跃卷积或反卷积-通过交换卷积的正向和反向传递来实现。一种方法是注意到核函数定义了卷积,但是

它是直接卷积还是转置卷积是由如何计算向前和向后传递。

For instance, although the kernel w defines a convolution whose forward and backward passes are computed by multiplying with C and CT respectively, it also defines a transposed convolution whose forward and backward passes are computed by multiplying with CT and (CT ) T = C respectively.

例如,虽然核w定义了一个卷积,它的前向传播和反向传播通过C或者CT乘计算,还定义了一个转置卷积,它的前向和反向传播是用CT和(CT)T的乘计算。

Finally note that it is always possible to emulate a transposed convolution with a direct convolution.The disadvantage is that it usually involves adding many columns and rows of zeros to the input, resulting in a much less efficient implementation

最后请注意,总是可以通过用直接卷积模拟一个转置卷积。缺点是,它通常需要在输入中添加许多列和行0,导致实现效率大大降低.(也就说作者不赞成正向卷积操作,转置卷积操作高效)

转置卷积

考虑对给定输入的用转置卷积的最简单的方法是:

       把输入想象成直接卷积的结果-特征图。因此,变换卷积可以被认为是允许恢复此初始特征映射的形状的操作。

下面的图表示:

        一种可以认为对2*2的恢复成了4*4的,先填充pad=2,然后用3*3卷积核,得到4*4的特征图;

        一种认为对4*4的做了转置卷积操作,得到2*2特征图。(高效  )

转置卷积

最后这几个,我还没看懂,暂时放图上来

转置卷积

相关文章:

  • 2021-06-09
  • 2021-04-17
  • 2021-05-30
  • 2021-07-14
  • 2021-08-24
猜你喜欢
  • 2021-04-08
  • 2022-01-21
  • 2021-04-05
  • 2021-07-31
  • 2021-10-24
  • 2021-09-16
  • 2021-06-05
相关资源
相似解决方案