CNN 滤波器17 Mar 2025 | 5 分钟阅读 卷积神经网络(CNN)在各种应用中都非常有效,包括分割、物体识别和图像分类。卷积核,通常被称为特征检测器或滤波器,是 CNN 的大脑。它们在从原始像素值中提取重要特征的过程中至关重要。 CNN 卷积核是小的、可学习的矩阵,它们在输入图像上滑动以执行卷积操作。这些卷积核充当特征提取器,检测图像中存在的模式、边缘、纹理和其他独特的特征。在训练过程中,每个卷积核都会学习检测特定特征,从而捕捉输入数据的不同方面。 CNN 卷积核的工作原理卷积是 CNN 卷积核工作机制的一部分。本质上,卷积是一种数学技术,它通过组合两个函数来创建一个第三个函数。在 CNN 的上下文中,卷积涉及将卷积核在输入图像上滑动,并计算图像的局部感受野与卷积核的逐元素乘积。之后,将数据相加,生成一个包含在特征图中的单个输出值。 CNN 卷积核的类型CNN 卷积核有四种类型:
代码 现在我们将尝试可视化卷积核 可视化卷积层众所周知,神经网络模型是不透明的。这意味着它们在为某个选择或预测提供上下文方面并不擅长。由于其结构和功能,旨在处理图像数据的卷积神经网络应该比其他类型的神经网络更容易理解。 特别是,模型由小的线性卷积核和卷积核的输出(称为激活图,或更广泛地说,特征图)组成。可以可视化特征图和卷积核。例如,我们可以创建和理解像线条检测器这样的小型卷积核。也许通过观察其卷积核,可以了解训练好的卷积神经网络如何工作。 我们将使用 Keras 框架中预先训练好的模型。虽然有其他 CNN 模型,但我们将采用 VGG 模型。它有 16 个已学习的层,非常深入,并且性能非常出色,因此产生的卷积核和特征图将捕捉到有价值的特征。 导入库输出 ![]() ![]() 可视化卷积核用神经网络的语言来说,学习到的卷积核只是权重;但是,由于卷积核独特的二维结构,权重值在空间上相互关联,将每个卷积核绘制成二维图像是有意义的(或可能是有意义的)。模型摘要(在之前的步骤中打印)提供了每个层输出形状的概述,例如最终特征图的形状。它只提供了每个层的总权重数;它没有指示网络中卷积核(权重)的实际形状。通过使用 model.layers 属性,我们可以访问模型中的每一层。 卷积层的命名约定是 block#_conv#,其中 # 是一个整数。每个层都有一个 layer.name 属性。因此,我们可以查找每个层的名称并忽略那些不包含“conv”字符串的层。 每个卷积层的权重有两组。一组是卷积核块,另一组是偏置值块。这些可以通过 layer.get_weights() 方法访问。可以检索这些权重,然后总结它们的形状。 输出 ![]() 可以看到每个层的 3x3 卷积核。 由于我们使用的是 channel-last 格式,因此可以看到每个卷积核对于包含红色、绿色和蓝色三个通道的输入图像具有三个深度。一个卷积核可以表示为三个图像的图,每个通道一个,或者可以将其压缩成单个彩色图像。另一种选择是仅查看第一个通道,并相信其余通道也会看起来相同。问题是还有六十三个卷积核我们可能想要可视化。 以下是我们如何从第一层获取卷积核的方法 权重值可能很小,对于正值和负值,中心都为 0.0。 为了更容易看到它们,我们可以将它们的值归一化到 0 到 1 之间。 将可视化第一层中的 64 个卷积核中的 6 个。 输出 ![]() 显而易见,第一行显示了所有通道的卷积核相同的实例,而最后一行显示了卷积核不同的实例。大或兴奋的权重由浅色方块表示,而小或抑制的权重由深色方块表示。通过这种理解,我们可以看到第一行的卷积核识别出从左上角浅到右下角深的渐变。 尽管有可视化,但我们只看到了第一个卷积层中 64 个卷积核中的前 6 个。可以在一张照片中看到所有 64 个卷积核。 不幸的是,这不可扩展。在检查第二个卷积层的卷积核时,我们发现再次有 64 个卷积核,但每个卷积核有 64 个通道,以便与输入特征图相对应。要显示所有 64 个卷积核在一行中的所有 64 个通道,将需要 (64×64) 4,096 个子图,并且可能很难从中看到任何细节。 下一主题香农熵 |
我们请求您订阅我们的新闻通讯以获取最新更新。