Keras层文档指定卷积层的输入和输出大小:https://keras.io/layers/convolutional/
输入形状: (samples, channels, rows, cols)
输出形状: (samples, filters, new_rows, new_cols)
并且内核大小是空间参数,即仅确定宽度和高度 .
因此,无论 c
的值如何,具有 c
通道的输入都将产生具有 filters
通道的输出 . 因此,它必须将2D卷积应用于空间 height x width
过滤器,然后以某种方式为每个学习过滤器聚合结果 .
这个聚合运算符是什么?它是跨渠道的总结吗?我能控制它吗?我找不到关于Keras文档的任何信息 .
- 请注意,在TensorFlow中,过滤器也在深度通道中指定:https://www.tensorflow.org/api_guides/python/nn#Convolution,因此深度操作是清晰的 .
谢谢 .
2 回答
可能令人困惑的是,它被称为 Conv2D 层(这对我而言,这就是我寻找这个答案的原因),因为正如Nilesh Birari评论的那样:
也许 2D 源于内核仅沿两个维度滑动的事实,第三维度是固定的,并由输入通道的数量(输入深度)决定 .
有关更详细的解释,请阅读https://petewarden.com/2015/04/20/why-gemm-is-at-the-heart-of-deep-learning/
我从那里采集了一个说明性的图像:
我也想知道这一点,并找到了另一个答案here,其中说明了(强调我的):
插图:
注意 weights of the convolution kernels for each channel are different ,然后在反向传播步骤中通过例如迭代调整 . 基于梯度体面的算法,如随机梯度下降(SDG) .
以下是TensorFlow API的更为技术性的答案 .