gpt4 book ai didi

neural-network - 为什么卷积神经网络中的卷积滤波器会翻转?

转载 作者:行者123 更新时间:2023-12-03 15:50:26 27 4
gpt4 key购买 nike

我不明白为什么在使用卷积神经网络时需要翻转过滤器。

根据千层面文件,

flip_filters : bool (default: True)

Whether to flip the filters before sliding them over the input, performing a convolution (this is the default), or not to flip them and perform a correlation. Note that for some other convolutional layers in Lasagne, flipping incurs an overhead and is disabled by default – check the documentation when using learned weights from another layer.



这意味着什么?在任何神经网络书籍中,我从未读过关于卷积时翻转滤波器的内容。请有人澄清一下好吗?

最佳答案

转置卷积滤波器的根本原因是卷积运算的定义——这是信号处理的结果。执行卷积时,您希望内核相对于执行卷积的轴翻转,因为如果不这样做,您最终会计算信号与其自身的相关性。如果您考虑将 1D 卷积应用于其中所讨论的函数变化非常剧烈的时间序列,则更容易理解 - 您不希望您的卷积被您的信号扭曲或相关。

This answer从数字信号处理堆栈交换站点给出了一个很好的解释,它通过数学解释了为什么卷积滤波器被定义为信号的相反方向。

This page演练完成翻转的详细示例。这是一种特殊类型的用于边缘检测的滤波器,称为 Sobel 滤波器。它没有解释为什么完成翻转,但很好,因为它为您提供了一个 2D 的解决方案。

我提到在 1D 情况下更容易理解为什么(例如,为什么卷积以这种方式定义)(来自 DSP SE 站点的答案确实是一个很好的解释);但是这个约定也适用于 2D 和 3D(Conv2DDNN 和 Conv3DDNN 层都有 flip_filter 选项)。然而,最终,因为卷积滤波器的权重不是人类编程的,而是由网络“学习”的,所以它完全是任意的——除非你从另一个网络加载权重,在这种情况下你必须与该网络中卷积的定义。如果卷积定义正确(即根据约定),过滤器将被翻转。如果它定义不正确(以更“天真”和“懒惰”的方式),则不会。

卷积所属的更广泛的领域是“线性系统理论”,因此搜索这个术语可能会更多地涉及到这一点,尽管不在神经网络的背景下。

请注意,corrmm.py 的文档字符串中也提到了卷积/相关区别。千层面类:

flip_filters : bool (default: False) Whether to flip the filters and perform a convolution, or not to flip them and perform a correlation. Flipping adds a bit of overhead, so it is disabled by default. In most cases this does not make a difference anyway because the filters are learnt. However, flip_filters should be set to True if weights are loaded into it that were learnt using a regular :class:lasagne.layers.Conv2DLayer, for example.

关于neural-network - 为什么卷积神经网络中的卷积滤波器会翻转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45152473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com