Keras Conv2D 和输入通道

新手上路,请多包涵

Keras 层文档指定了卷积层的输入和输出大小: https ://keras.io/layers/convolutional/

输入形状: (samples, channels, rows, cols)

输出形状: (samples, filters, new_rows, new_cols)

内核大小是一个空间参数,即只确定宽度和高度。

因此,无论 c 的值如何,具有 c 通道的输入将产生具有 filters 通道的输出。因此,它必须应用具有空间 height x width 过滤器的 2D 卷积,然后以某种方式为每个学习的过滤器聚合结果。

这个聚合运算符是什么?它是跨渠道的总和吗?我可以控制它吗?我找不到有关 Keras 文档的任何信息。

  • 请注意,在 TensorFlow 中,过滤器也在深度通道中指定: https ://www.tensorflow.org/api_guides/python/nn#Convolution ,因此深度操作很清楚。

谢谢。

原文由 yoki 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 459
2 个回答

它被称为 Conv2D 层可能会让人感到困惑(对我来说,这就是我来寻找这个答案的原因),因为正如 Nilesh Birari 评论的那样:

我猜你错过了它的 3D 内核 [宽度、高度、深度]。所以结果是跨渠道求和。

也许 2D 源于这样一个事实,即内核仅沿两个维度 _滑动_,第三个维度是固定的,由输入通道的数量(输入深度)决定。

如需更详尽的解释,请阅读 https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/

我从那里摘了一张说明性图片:

内核深度

原文由 noio 发布,翻译遵循 CC BY-SA 3.0 许可协议

我也在想这个,并在 这里 找到了另一个答案,其中有说明(强调我的):

也许多通道输入的最具体示例是当您有一个具有 3 个 RGB 通道的彩色图像时。让我们把它放到一个具有 3 个输入通道和 1 个输出通道的卷积层。 (…) 它所做的是计算每个滤波器与其对应的输入通道 (…) 的卷积。所有通道的步幅相同,因此它们输出相同大小的矩阵。现在, 它对所有矩阵求和并输出一个矩阵,这是卷积层输出的唯一通道

插图:

在此处输入图像描述

请注意, 每个通道的卷积核的权重是不同 的,然后在反向传播步骤中通过诸如随机梯度下降 (SDG) 等基于梯度下降的算法对其进行迭代调整。

这是来自 TensorFlow API 的更技术性的回答。

原文由 Alaroff 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题