【问题标题】:How deeper layers learn from previous layers feature maps in Conv nets深层如何从卷积网络中的前一层特征映射中学习
【发布时间】:2019-06-28 23:01:09
【问题描述】:

我阅读了很多关于 convnet 的文章,但仍然错过了一个重要部分。

假设我们有一个带有 32 个过滤器的 conv2D 层:

我了解这些过滤器的权重在开始时是随机初始化的,并且在训练过程中会形成这些过滤器。 所以在第一层他们开始检测边缘。

现在在池化之后,我们有另一个卷积层(比如说 32 个过滤器),它将对前一层的结果应用过滤器。

因此,第 2 层将对来自第一层的这 32 个输出中的任何一个应用 32 个过滤器。 我看到了很多这些特征图的例子:第一层产生边缘图片,下一层图片是形状、耳朵、鼻子等。 我的问题是这怎么可能?

如果第 2 层对第 1 层结果应用过滤器并且第 1 层结果是边,那么如何从边获取表单?

我显然在这里遗漏了一些东西,请帮助我理解卷积网络中的每个下一层如何产生更丰富的特征,如形式、眼睛、面部,以防它使用前一层的生产,其中特征只是线条和边缘?

在我丢失的过程中是否有一些信息合并或更多?

提前致谢

【问题讨论】:

    标签: neural-network conv-neural-network convolution biological-neural-network


    【解决方案1】:

    简单示例:假设您尝试区分简单的几何形式。例如。由钻石组成的矩形。

    在第一层,您有各种边缘检测器。有些在检测到水平边缘时触发,有些在检测到垂直边缘时触发,有些在检测到对角边缘时触发。

    第二层现在可以将这些输入组合成更复杂的形状。 因此,如果在第一层检测到垂直和水平边缘,则会触发一个过滤器/检测器。这是矩形的过滤器。

    当第一层告诉它检测到对角线边缘时,将触发另一个过滤器。这是钻石的过滤器。

    您可能会熟悉卷积层的输入和输出维度。

    Input = W1xW1xD1
    
    Output:
    W2 = (W1 - F + 2P)/S + 1
    D2 = K
    

    Terminology: K = Number of Filters, F= Spatial Size of Filter, P=ZeroPadding, S=Stride

    您可能会发现这很有帮助:

    https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

    http://cs231n.github.io/convolutional-networks/

    【讨论】:

    • 所以你说第二层以某种方式结合了第一层的结果?我认为第一层将生成 32 张图像,第二层将在每个图像上应用过滤器,第二层输出将是 32x32 ... 1024 图像
    • 是的,第二层过滤器对第一层的结果进行卷积。
    • 过滤器应用于上一层的所有通道。看看来自heredemo gif。如果你看一下 gif,你会发现所有渠道的信息都被合并了。
    • 对不起,我还是不明白。假设我有一张鼠标的图片。假设第一层创建 32 个图像。其中一些图像将是边缘,其他线条。所以现在让我们只取其中一个,一些边缘作为第二层的输入。第二层如何仅在此“边缘”图片上应用新的 32 个过滤器将提取更丰富的形式。我找不到明确的示例或解释是前一层的这些产品在下一层中以某种方式组合在一起。似乎它们是分开处理的,这实际上让我感到困惑。如果它们以某种方式组合:是的,这是有道理的,但我找不到示例
    • 我真的推荐你使用我上面提供的公式。也许尝试了解 alexnet。另外,您可能会看看这个interactive visualization,它记录在here
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 2015-05-07
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多