3

我已经看到了两种从可靠来源可视化转置卷积的方法,据我所知它们是冲突的。

我的问题归结为,对于内核的每个应用程序,我们是从3x3具有输入填充的许多(例如)元素变为一个,还是从一个元素变为多个(例如3x3)?

相关问题:tf.nn.conv2d_transpose实现了哪个版本?

我困惑的根源是:


深度学习的卷积算法指南可能是最有名的可视化,但它没有经过同行评审 (Arxiv)。


第二个来自Deconvolution 和 Checkerboard Artifacts,在技术上也没有经过同行评审(Distil),但它来自一个更有信誉的来源。(文中使用了反卷积这个词,但说明这和transposed conv是一样的。)

在此处输入图像描述


由于这个问题的性质,很难在网上寻找结果,例如这个SO帖子占据了第一位,但我不确定我能在多大程度上信任它。

4

3 回答 3

2

我想再强调一点 Littleone 在上一段中也提到的内容:

转置卷积将反转具有相同参数的常规卷积的空间变换。

如果您执行常规卷积,然后执行转置卷积,并且两者都具有相同的设置(内核大小、填充、步幅),那么输入和输出将具有相同的形状。这使得使用它们构建编码器-解码器网络变得非常容易。我在这里写了一篇关于深度学习中不同类型卷积的文章,其中也涉及到了这一点。

PS:请不要称之为反卷积

于 2018-01-30T14:49:37.473 回答
2

跨步卷积、反卷积、转置卷积都具有相同的含义。这两篇论文都是正确的,你不必怀疑,因为它们都被大量引用。但是蒸馏图像是从不同的角度来看的,因为它试图显示伪影问题。

第一个可视化是步幅为 2 和填充为 1 的转置卷积。如果步幅为 1,则输入之间不会有任何填充。边界上的填充取决于输出的尺寸。

通过反卷积,我们通常从较小的维度进入更高的维度。并且输入数据通常被填充以实现所需的输出尺寸。我相信混乱是由填充模式引起的。看看这个公式

output = [(input-1)stride]+kernel_size-2*padding_of_output

它是对一般卷积输出公式的重新排列。这里的输出是指反卷积操作的输出。为了更好地理解反卷积,我建议从方程的角度来思考,即翻转卷积的作用。它问我如何反转卷积操作的作用?

希望有帮助。

于 2018-01-30T08:35:29.083 回答
1

Justin Johnson(斯坦福 cs231n mooc 的一部分)的很好解释:

https://youtu.be/ByjaPdWXKJ4?t=1221(20:21开始)

他回顾了跨步卷积,然后解释了转置卷积。

于 2019-08-21T10:39:25.203 回答