如何可视化(和理解)转置的卷积?

时间:2018-01-30 06:54:54

标签: tensorflow machine-learning deep-learning convolution deconvolution

我已经看到两种方法可视化来自可信来源的转置卷积,并且据我所知它们发生冲突。

我的问题可以归结为,对于内核的每个应用程序,我们是否从使用输入填充的多个(例如3x3)元素转到一个,或者我们从一个元素转到多个(例如3x3)?

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

我的困惑的来源是:

A guide to convolution arithmetic for deep learning可能是最着名的可视化,但它没有经过同行评审(Arxiv)。

第二个来自Deconvolution and Checkerboard Artifacts,技术上也没有同行评审(Distil),但它来自更有信誉的来源。 (文章中使用了deconvolution一词,但声明这与转置转换相同。)

enter image description here

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

3 个答案:

答案 0 :(得分:2)

我想更多地强调Littleone在他的最后一段中提到的内容:

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

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

PS:请不要将其称为解卷积

答案 1 :(得分:1)

有争议的卷积,解卷积,转换卷积都意味着同样的事情。两篇论文都是正确的,你不需要怀疑,因为它们都是cited。但是,当它试图显示文物问题时,蒸馏图像来自不同的视角。

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

通过反卷积,我们通常从较小的维度到较高的维度。并且通常填充输入数据以实现期望的输出尺寸。我认为混淆是由填充模式引起的。看看这个公式

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

它是一般卷积输出公式的重新排列。此处的输出是指反卷积操作的输出。为了最好地理解反卷积,我建议用等式来思考,即翻转卷积的作用。它问我如何反转卷积运算的作用?

希望有所帮助。

答案 2 :(得分:1)

贾斯汀·约翰逊(斯坦福大学cs231n mooc的一部分)的很好解释:

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

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