【问题标题】:CNN network, continue using conv2d, without using maxpool, a question from reading the keras bookCNN网络,继续使用conv2d,不使用maxpool,看keras书的一个问题
【发布时间】:2019-02-27 15:14:52
【问题描述】:

我正在阅读 Francois Chollet 的 Python 学习一书。在第 128 页,作者正在讨论具有连续 Conv2d 层而不是具有最大池化层的问题。我的问题来自以下段落。 我不明白 7X7 是从哪里来的?

这不利于学习特征的空间层次结构。 3 × 3 窗口 在第三层将只包含来自 7 × 7 窗口的信息 初始输入。 convnet 学习到的高级模式仍然非常 初始输入很小,可能不足以学习分类 数字(尝试通过仅通过以下窗口查看数字来识别数字) 7 × 7 像素!)。我们需要最后一个卷积层的特征来包含 有关输入整体的信息。

Layer (type) Output Shape Param #
================================================================
conv2d_4 (Conv2D) (None, 26, 26, 32) 320
________________________________________________________________
conv2d_5 (Conv2D) (None, 24, 24, 64) 18496
________________________________________________________________
conv2d_6 (Conv2D) (None, 22, 22, 64) 36928
================================================================
Total params: 55,744
Trainable params: 55,744
Non-trainable params: 0

【问题讨论】:

  • 请不要重新编辑 - 这是引用段落的标准 SO 格式...

标签: machine-learning keras neural-network conv-neural-network


【解决方案1】:

我假设你的 cnn 架构只有 3*3 个内核。

感谢 3*3 内核,第一层是根据您的输入创建特征图。这些特征图的每个像素仅依赖于输入的 3*3 平方。第二层做同样的事情,将特征图作为输入。所以现在,一个像素依赖于一个 3*3 平方的特征图,它依赖于一个 5*5 平方的输入。

通过第三次这样做,第三层特征图上的像素仅取决于输入的 7*7 窗口。

这是一个 1D 示例:

        *            # third layer pixel
      | | |
      * * *          # second layer pixels
    | | | | |
    * * * * *        # first layer pixels
  | | | | | | |
  * * * * * * *      # input pixels --> An unique third layer layer pixel depends on only 7 input pixels

【讨论】:

  • 非常感谢皮埃尔!!!您的图表非常形象地回答了这个问题!!!
  • @Pierre-Nicolas Piquin,非常感谢您的详细解释。您能否解释一下如何使用 Max Pooling 解决此问题。提前谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-19
  • 2018-10-16
  • 2020-05-29
  • 2021-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多