NCHW 输入矩阵到 cuDNN 中卷积的 Dm 转换逻辑

NCHW input matrix to Dm conversion logic for convolution in cuDNN

我一直在努力理解cuDNN paper中所示的卷积降低操作。通过阅读并将各种参数映射到下图,我能够理解其中的大部分内容。但是,我无法理解原始输入数据(NCHW)如何转换为红色显示的Dm矩阵。

Dm 矩阵的元素排序没有意义。有人可以解释一下吗?

Dm的每一列对应原始图像的一个图块。下面显示了两个示例:

没有关于如何提取这些图块的简单数学描述(作者称之为“non-trivial”),但在第 3.1 节中有一些一般性评论。

一些注意事项:

  1. DmFm 中数据的确切布局是灵活的:您可以置换 Dm 的行和 Fm 或 [=42= 的列].
  2. cuDNN 实际上并没有完全构建 Dm,而是根据需要懒惰地生成 Dm 的列(请参阅本文的第 3.1 节)
  3. 卷积或cross-correlation? 卷积的经典定义要求在将过滤器应用于图像之前(沿两个轴)翻转过滤器。现代 machine-learning 框架往往不会这样做,数学学究称之为 cross-correlation 而不是卷积。从 machine-learning 的角度来看,使用哪个并不重要,但是 filter-flipping 赋予卷积很好的代数特性(例如交换性)并且符合数学中使用的卷积定义(旁注:卷积意味着折叠或滚动)。在这篇 cuDNN 论文中,过滤器 被翻转