内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法

参考: https:// petewarden.com/2015/04/ 20/why-gemm-is-at-the-heart-of-deep-learning/

平常都是无脑使用Pytorch提供的nn.Conv2d方法,但是并不关心具体该如何实现,原来是把卷积操作转化成矩阵乘法,而不是真的通过滑动卷积核来做卷积,下面做具体介绍。

首先看一下下面的示意图,左边是输入图像,右边是卷积核(为方便说明,只用了一个卷积核)。

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第1张图片

下面是用这个卷积核对输入图像做卷积操作,最后得到一个2维的平面

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第2张图片

由下图可以看到卷积操作其实就是把输入图像划分成若干个块(patch),每个块的维度和卷积核保持一致(这里暂时忽略stride,padding的影响)。然后我们可以把每个3维的patch展开成一维向量,然后拼接起来得到一个二维矩阵。

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第3张图片

因为每个patch都是和相同的卷积核做卷积,那么我们也可以同样把卷积核展开成以为向量。下图中右边的卷积核矩阵表示多个卷积核拼凑的结果。

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第4张图片

完整的转化过程可看下图:

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第5张图片

MARSGGBO♥原创
如有意合作,欢迎私戳
邮箱:[email protected]

微信公众号: 【AutoML机器学习】

内部矩阵维度必须一致simulink_卷积操作转化成矩阵乘法_第6张图片
AutoML机器学习

2019-12-20 17:17:07

你可能感兴趣的:(矩阵维度必须一致)