im2col:使用二维矩阵乘法进行多维卷积计算。

这两天在做加速模型的工作,于是接触到了各种卷积的变形,和卷积的实现细节,从而了解到了im2col。im2col是一种高效的卷积计算方法,现在所有的深度学习框架应该都是用它实现卷积的吧(这个我没深究)。
过程如下图所示:


image

相当于把多维feature map 和多个kernel,分别平铺成二维矩阵,然后直接进行矩阵乘法。
假设,,,。
为了切合图片内容,我们考虑no padding ,的情况。那么:
1. im2col后的feature map
被平铺成了一个二维矩阵,,,即:

  • im2col后的feature map每一行——是input的每个通道的feature map的同一区域(大小=kernel size),reshape成一行,然后把各个通道按行拼接起来。
  • 行数——其实就是kernel跟input的每个通道的feature map要做的卷积运算次数,也就是output的size(行x列)。

2. im2col后的kernel matrix
也被平铺成了一个二维矩阵,,。

最后,使用1 ,2得到的两个二维矩阵做矩阵乘法,得到一个行, 列的二维矩阵。
reshape成,就完成了卷积计算过程。

你可能感兴趣的:(im2col:使用二维矩阵乘法进行多维卷积计算。)