卷积神经网络中的矩阵乘法
首先来看一个二维过滤器,如下图所示。
过滤器是3x3矩阵,输入数据是5x5矩阵。
输入矩阵(以下称为滑动窗口)中的红色框是活动区域(ActiveRegion),该区域的大小与3x3正方形矩阵的滤镜的大小相同。
激活区域和滤波器的相应系数相乘并相乘以获得相应的输出(此处,矩阵元素对应于乘法和加法,而不是矩阵乘法)。
之后,立即将滑动窗口向右移动一个网格以获得新的激活区域,然后将滤镜的相应元素相乘并再次相加以获得第二个输出。
在此,滑动窗口的步长为1。
当滑动窗口的右边缘与输入数据的右边缘重合时,滑动窗口将返回到输入数据的最左边缘,并向下移动一个网格。
可以看出,滑动窗口将在两个维度上移动。
过滤和卷积本质上是相同的。
回忆一维滤波器或一维卷积运算。
输入数据按时间维度顺序进入卷积窗口。
当前输出取决于卷积窗口中的滤波器系数和输入数据,并且执行的操作也是乘法和加法。
到目前为止,可以看出,二维滤波器仅将卷积窗口从一维改变为二维,并且同时,输入数据也从一维改变为二维。
可以将乘法和加法转换为矩阵乘法吗?答案是肯定的。
以下图为例。
首先,我们取出每个活动区域的输入数据,以从二维矩阵更改为一维行向量。
滑动窗口步长为1,共有4个有效区域,因此可以获得4个一维矢量。
这4个一维向量形成4x9二维矩阵。
其次,我们“拉直”一个方向。
以行和列的方式过滤该滤波器,以形成尺寸为9x1的一维列向量。
显然,此时,由四个有源区形成的矩阵与由滤波器系数形成的列矢量是可乘的,满足了矩阵乘法的要求。
之后,您可以直接执行矩阵乘法以获得输出结果。
CNN中的卷积运算本质上是一个二维滤波器,它是矩阵中相应元素的乘法和加法。
但是,在实施项目时,可以使用上图所示的方法将其转换为矩阵乘法,从而提高了计算效率。
原标题:卷积神经网络中的矩阵乘法将是什么?文章来源:[微信公众号:劳伦的FPGA]欢迎大家关注!请指出转载文章的来源。