Tensorflow 如何可视化(并理解)转置卷积?

Tensorflow 如何可视化(并理解)转置卷积?,tensorflow,machine-learning,deep-learning,convolution,deconvolution,Tensorflow,Machine Learning,Deep Learning,Convolution,Deconvolution,我已经看到了两种从可靠来源可视化转置卷积的方法,就我所知,它们是相互冲突的 我的问题归结为,对于内核的每个应用程序,我们是从多个(例如,3x3)元素(带有输入填充)到一个,还是从一个元素到多个(例如,3x3) 相关问题:实现哪个版本 我困惑的根源是: 有可能是最著名的可视化,但它不是同行评审(Arxiv) 第二个来源于,从技术上讲,它也不是同行评审的(Distil),但它来自一个更知名的来源。 (本条中使用了术语反褶积,但声明这与转置conv相同。) 由于这个问题的性质,很难在网上找到

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

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

相关问题:实现哪个版本

我困惑的根源是:


有可能是最著名的可视化,但它不是同行评审(Arxiv)


第二个来源于,从技术上讲,它也不是同行评审的(Distil),但它来自一个更知名的来源。 (本条中使用了术语反褶积,但声明这与转置conv相同。)



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

跨步卷积、反卷积、转置卷积都意味着同样的事情。这两篇论文都是正确的,你不必怀疑,因为它们都很重要。但是distil图像是从另一个角度,因为它试图显示伪影问题

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

通过反褶积,我们通常从一个较小的维度到一个较高的维度。通常对输入数据进行填充,以达到所需的输出维度。我相信这种混淆是由填充模式引起的。看看这个公式

output = [(input-1)stride]+kernel_size-2*padding_of_output
这是对一般卷积输出公式的重新排列。这里的输出是指反褶积操作的输出。为了更好地理解反褶积,我建议从方程的角度来思考,即翻转卷积的作用。它问我如何逆转卷积运算的作用


希望有帮助

我想再强调一下Littleone在最后一段中提到的内容:

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

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


PS:请不要称之为反卷积,贾斯汀·约翰逊(斯坦福cs231n mooc的一部分)的解释很好:

(20:21开始)

他回顾了Striped conv,然后解释了转置卷积


谢谢您的回答。我了解分层动态,但在操作层面我仍然不确定。对于内核的每一个应用程序,输入接收场有多大?跨步卷积不同于转置卷积。此外,转置的conv并不与conv相反,它基本上对应于conv的梯度运算。虽然“反褶积”和“转置卷积”通常以类似的方式使用,但它们确实如此!PS:请不要称之为反褶积。事实上,distil出版物是经过同行评审的,而且过程相当严格。。。