首页 文章

Keras Conv2D和输入通道

提问于
浏览
19

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

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

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

并且内核大小是空间参数,即仅确定宽度和高度 .

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

这个聚合运算符是什么?它是跨渠道的总结吗?我能控制它吗?我找不到关于Keras文档的任何信息 .

谢谢 .

2 回答

  • 12

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

    我猜你错过了它的3D内核[宽度,高度,深度] . 因此,结果是跨渠道的总和 .

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

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

    我从那里采集了一个说明性的图像:

    kernel depth

  • 5

    我也想知道这一点,并找到了另一个答案here,其中说明了(强调我的):

    当你有一个有3个RGB通道的彩色图像时,可能是多通道输入最明显的例子 . 让我们把它带到一个带有3个输入通道和1个输出通道的卷积层 . (...)它的作用是计算每个滤波器与其相应输入通道(...)的卷积 . 所有通道的步幅都相同,因此它们输出大小相同的矩阵 . 现在,它对所有矩阵求和并输出单个矩阵,该矩阵是卷积层输出的唯一通道 .

    插图:

    enter image description here

    注意 weights of the convolution kernels for each channel are different ,然后在反向传播步骤中通过例如迭代调整 . 基于梯度体面的算法,如随机梯度下降(SDG) .

    以下是TensorFlow API的更为技术性的答案 .

相关问题