im2col
及其倒数col2im
是深度学习框架中快速卷积的重要功能。该算法在these slides中进行了一些安排(从幻灯片66开始)。在this blog的开头可以找到有关数学的很好解释。可以说im2col
涉及重塑卷积权重和图像,以允许将卷积计算为矩阵乘法,这使我们能够使用高度优化的GEMM函数来解析输出。 col2im
正在重塑。
我感到困惑的是为什么我们重塑图像(如 im 2col)。给定博客文章中描述的操作,似乎更容易将图像矩阵简单地展平为Nx1(N是通道,图像的高度和宽度的乘积),并重整卷积权重。在我看来,这很容易的原因是,权重只是根据简单的采样模式进行复制(本质上只是根据行进行跨步),而图像重塑似乎需要更多的采样。
我唯一能想到的是,这与GEMM函数中的内存访问有关。也许矩阵形状更有效(而不是Nx1向量)?
谁能阐明为什么以这种方式布置算法?