考虑以下与 CNNS 相关的代码行
Conv2D(64, (3,3), strides=(2, 2), padding='same')
它是一个带有过滤器大小的卷积层和步长.
我对需要过滤器。
他们在做同样的任务吗?显然,它不是。(在这种情况下一个就足够了)
那么每个过滤器有什么不同呢?它是否悬停在输入矩阵上?还是在过滤器本身包含的值中?还是悬停和内容都不同?
我发现很难想象它。
考虑以下与 CNNS 相关的代码行
Conv2D(64, (3,3), strides=(2, 2), padding='same')
它是一个带有过滤器大小的卷积层和步长.
我对需要过滤器。
他们在做同样的任务吗?显然,它不是。(在这种情况下一个就足够了)
那么每个过滤器有什么不同呢?它是否悬停在输入矩阵上?还是在过滤器本身包含的值中?还是悬停和内容都不同?
我发现很难想象它。
那么每个过滤器有什么不同呢?它是否悬停在输入矩阵上?还是在过滤器本身包含的值中?还是悬停和内容都不同?
过滤器(又名内核)是 CNN 的可学习参数,就像神经元(或节点)之间的连接权重是多层感知器(或前馈神经网络)的可学习参数一样。
因此,这些过滤器的值不是固定的或预先确定的,而是取决于您如何训练 CNN,即学习算法、目标函数和数据。如果您使用梯度下降作为学习算法,您将最小化损失(也称为成本或误差)函数(例如交叉熵,在分类问题的情况下)。为此,您需要找到损失函数相对于滤波器的梯度。然后,您应用梯度下降步骤(即,您将损失函数相对于参数的梯度的缩放版本添加到参数中),以便该损失减少。
为了更直接地回答您的问题,通常唯一改变的只是过滤器的值。所有滤波器的卷积(或互相关)操作都是相同的。
为什么要使用多个过滤器?通常的解释是,每个过滤器在与输入进行卷积时,都会从中提取不同的特征,而它们将提取的具体特征将取决于过滤器的具体值,而过滤器的具体值又取决于数据,所以我们可以说 CNN 是数据驱动的特征提取器。如果您熟悉图像处理技术,那么您就会知道不同的滤镜在与同一张图像进行卷积时会产生不同的效果(例如模糊或去噪)。
所有过滤器都在同一区域移动,但每个过滤器的过滤器值(也称为过滤器内核)不同。这使得“过滤掉”不同的特征成为可能。