当前位置: 首页 > 知识库问答 >
问题:

卷积神经网络中卷积滤波器为什么翻转?[已关闭]

宋涵衍
2023-03-14

此问题似乎与在帮助中心定义的范围内编程无关。

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

根据千层面文件,

flip_filters:bool(默认值:True)

是在将过滤器滑动到输入上之前翻转过滤器,执行卷积(这是默认设置),还是不翻转过滤器并执行相关。请注意,对于千层面中的其他一些卷积层,翻转会产生开销,默认情况下是禁用的–使用从其他层学习的权重时,请查看文档。

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

共有3个答案

长孙弘壮
2023-03-14

我从未在任何神经网络书籍中读到过在卷积时翻转过滤器。

您可以尝试一个简单的实验。取一张最中心像素为值1的图像,所有其他像素为值0。现在取任何小于图像的过滤器(让我们假设一个值为1-9的3乘3过滤器)。现在做一个简单的相关而不是卷积。您最终将翻转过滤器作为操作后的输出。

现在自己翻转过滤器,然后执行相同的操作。很明显,最终的输出是原始过滤器。

第二个操作似乎更简洁。它就像与1相乘并返回相同的值。然而,第一个不一定是错误的。即使它可能没有很好的数学属性,它也能在大多数情况下工作。毕竟,为什么程序会关心操作是否是关联的。它只是做它被告知要做的工作。此外,过滤器可能是对称的...翻转它返回相同的过滤器,因此相关操作和卷积操作返回相同的输出。

这些数学性质是否有帮助?当然,他们会的!如果(ab)c不等于(bc),那么我将无法组合2个过滤器,然后将结果应用到图像上。为了澄清,假设我有两个过滤器a、b和图像c。我必须首先对图像“c”应用“b”,然后对上述结果应用“a”,以防相关。在卷积的情况下,我可以先做“a b”,然后将结果应用到图像“c”上。如果我有一百万张图像要处理,那么通过组合过滤器“a”和“b”获得的效率开始变得明显。

卷积满足的每一个数学属性都有一定的好处,因此如果我们有选择(

应用卷积满足了我们所有人内心的数学家,也给了我们一些切实的好处。

虽然现在图像中的特征工程完全是由Mrs DL本身端到端完成的,我们甚至不必为此操心,但还有其他传统的图像操作可能需要这种操作。

阙项禹
2023-03-14

首先,由于CNN是从零开始训练的,而不是人工设计的,如果需要翻转操作,则学习的滤波器将是翻转的滤波器,并实现与翻转滤波器的互相关。其次,在一维时间序列处理中,翻转是必要的,因为在给定“当前”输入的情况下,过去的输入会影响当前系统的输出。但在二维/三维图像空间卷积中,没有“时间”概念,也没有“过去”输入及其对“现在”的影响,因此,我们不需要考虑“信号”和“系统”的关系,只有“信号”(图像块)和“信号”(图像块)的关系,这意味着我们只需要互相关而不是卷积(尽管DL借用了信号处理的这个概念)。因此,实际上不需要翻转操作。(我想是吧。)

洪知
2023-03-14

转置卷积滤波器的根本原因是卷积操作的定义——这是信号处理的结果。执行卷积时,您希望内核相对于执行卷积的轴进行翻转,因为如果不这样做,您最终会计算信号与自身的相关性。如果您考虑将一维卷积应用于相关html" target="_blank">函数变化非常剧烈的时间序列,则更容易理解——您不希望卷积被您的信号歪曲或与您的信号相关。

这个来自数字信号处理堆栈交换站点的答案给出了一个很好的解释,解释了为什么卷积滤波器被定义为与信号相反的方向。

本页将介绍一个翻转的详细示例。这是一种用于边缘检测的特殊类型的过滤器,称为Sobel过滤器。它并没有解释为什么要进行翻转,但很好,因为它为您提供了一个在2D中计算出来的示例。

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

卷积所属的更广泛领域是“线性系统理论”,因此搜索这个术语可能会发现更多关于这一点的信息,尽管不在神经网络的范围内。

请注意,corrmm的docstrings中也提到了卷积/相关的区别。千层面py等级:

flip\u filters:bool(默认值:False)是翻转过滤器并执行卷积,还是不翻转过滤器并执行相关。翻转会增加一点开销,因此默认情况下会禁用翻转。在大多数情况下,这不会产生任何影响,因为过滤器是经过学习的。但是,如果使用常规的:class:千层面将权重加载到flip\u过滤器中,则应将其设置为True。图层。例如,Conv2DLayer。

 类似资料:
  • 创建卷积神经网络(CNN)时(如中所述https://cs231n.github.io/convolutional-networks/)输入层与一个或多个过滤器连接,每个过滤器表示一个要素地图。这里,过滤层中的每个神经元只与输入层的几个神经元相连。在最简单的情况下,我的n个过滤器中的每一个都具有相同的维度并使用相同的步幅。 我的问题是: 如何确保过滤器学习不同的特征,尽管它们使用相同的补丁进行训练

  • 我读过这篇文章“UFLDF”,它发展了autoencoder中隐藏层的可视化,但我很困惑如何可视化卷积神经网络的滤波器。在我看来,对于第一个卷积层,要使滤波器可视化,它需要这个等式: 对于第二个卷积层,它应该将滤波器投射到原始输入空间,但我不知道如何做。

  • 本文向大家介绍卷积神经网络的卷积是什么意思? 相关面试题,主要包含被问及卷积神经网络的卷积是什么意思? 时的应答技巧和注意事项,需要的朋友参考一下   答:对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源  

  • 注意: 本教程适用于对Tensorflow有丰富经验的用户,并假定用户有机器学习相关领域的专业知识和经验。 概述 对CIFAR-10 数据集的分类是机器学习中一个公开的基准测试问题,其任务是对一组大小为32x32的RGB图像进行分类,这些图像涵盖了10个类别: 飞机, 汽车, 鸟, 猫, 鹿, 狗, 青蛙, 马, 船以及卡车。 想了解更多信息请参考CIFAR-10 page,以及Alex Kriz

  • 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络

  • 下午好在第一阶段,在卷积神经网络(输入层)的输入上,我们接收一个源图像(因此是手写英文字母的图像)。首先,我们使用一个从左到右的nxn窗口来扫描图像并在内核(卷积矩阵)上乘法来构建特征映射?但没有人写过内核应该具有什么样的精确值(换句话说,我应该将从n*n窗口检索到的数据相乘到什么样的内核值)。是否适合在这个用于边缘检测的卷积核上乘以数据?有许多卷积核(浮雕、高斯滤波器、边缘检测、角度检测等)?但