我已经看到两种方法可视化来自可信来源的转置卷积,并且据我所知它们发生冲突。
我的问题可以归结为,对于内核的每个应用程序,我们是否从使用输入填充的多个(例如3x3
)元素转到一个,或者我们从一个元素转到多个(例如3x3
)?
相关问题: tf.nn.conv2d_transpose实施了哪个版本?
我的困惑的来源是:
A guide to convolution arithmetic for deep learning可能是最着名的可视化,但它没有经过同行评审(Arxiv)。
第二个来自Deconvolution and Checkerboard Artifacts,技术上也没有同行评审(Distil),但它来自更有信誉的来源。 (文章中使用了deconvolution一词,但声明这与转置转换相同。)
由于此问题的性质,很难在线查找结果,例如这个SO帖子占据了第一的位置,但我不确定我能在多大程度上信任它。
答案 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开始)
他回顾了大步转换,然后解释了转置卷积。