使用 CNN 提取的特征数量

问题描述 投票:0回答:1

我最近在接受采访时遇到了一个与卷积神经网络(CNN)相关的问题,我希望能澄清我的理解的具体方面。

在以下 CNN 架构的背景下:

    i = Input(shape=x_train[0].shape)
    x = Conv2D(32, (3, 3), strides=2, activation='relu')(i)
    x = Conv2D(64, (3, 3), strides=2, activation='relu')(x)
    x = Conv2D(128, (3, 3), strides=2, activation='relu')(x)
    x = Flatten()(x)
    x = Dropout(0.5)(x)
    x = Dense(1024, activation='relu')(x)
    x = Dropout(0.2)(x)
    x = Dense(K, activation='softmax')(x)
 
    model = Model(i, x)

我正在寻求对卷积层中使用的滤波器数量(32、64、128)的解释的澄清。具体来说,我想确认这些滤波器的总和是否代表从图像中提取的特征图的总数。此外,特征图总数是否对应于从网络获得的特征总数(低/高级特征)?换句话说,内核的数量是否可以被认为等于从图像中提取的特征的数量?那么我可以说我们在这个架构中提取了 224 个特征吗?

我浏览了不同的博客文章,但没有明确得到我的这个 POV 是正确的答案。

deep-learning conv-neural-network
1个回答
0
投票

我会尝试根据我从课程中了解到的内容来回答。我不确定,但也许它会对你有帮助(一点)。在这里,对于 CNN,内核或过滤器对我来说是相同的。

在 CNN 中,卷积层中的每个滤波器/内核旨在“检测输入数据中的特定类型的特征”。例如,当一个层中有 32 个过滤器时,每个过滤器都会独立扫描输入图像(或前一层的输出)以检测 32 个不同的特征(例如:边缘、纹理、颜色或图像中的其他图案)。图像,取决于网络在训练期间学习的内容)。每个过滤器/内核的输出是一个特征图,它是输入数据的表示,突出显示过滤器/内核旨在检测的特征的存在。 在您描述的架构中,三个卷积层分别有 32、64 和 128 个滤波器。值得注意的是,卷积层生成的特征图数量等于该层中的滤波器数量

。因此:

The first Conv2D layer with 32 filters produces 32 feature maps. The second Conv2D layer with 64 filters produces 64 feature maps. The third Conv2D layer with 128 filters produces 128 feature maps. 这些特征图不会像您想象的那样跨层叠加。网络提取的特征总数不仅仅是所有层上过滤器的总和(在您的情况下为 32 + 64 + 128 = 224)。相反,

每个(隐藏)层将从前一层接收到的特征图集转换为一组新的特征图

这些过滤器的输出是相应数量的特征图,每个图都是应用于输入的一个过滤器的结果。 第一层可能检测边缘或颜色(“基本”模式)等简单特征,而更深的层将这些特征组合成更复杂的特征,如纹理或特定图案(更抽象)。特征的深度和复杂性随着每一层的增加而增加,但特征的数量并不是过滤器的简单总和。

简而言之,每层中的内核数量决定了特征图的数量,从而决定了该层检测到的不同特征的数量。网络提取的特征总数是一个更复杂的概念。它涉及如何跨网络层组合和转换特征的层次和组合性质。

© www.soinside.com 2019 - 2024. All rights reserved.