卷积神经网络中的矩阵乘法

描述

先看一个二维滤波器,如下图所示。滤波器是一个3x3的矩阵,输入数据是一个5x5的矩阵。输入矩阵中的红色方框(下文称之为滑窗)是一个激活区域(ActiveRegion),这个区域的大小与滤波器大小一致,均为3x3方阵。激活区域与滤波器对应系数相乘并相加即获得对应的输出(这里是矩阵元素对应相乘相加,不是矩阵乘法)。紧接着,滑窗右移一格,得到新的激活区域,再次与滤波器对应元素相乘相加获得第2个输出。这里滑窗的步进为1。当滑窗右侧边缘与输入数据右侧边缘重合时,滑窗重新回到输入数据最左侧边缘并下移一格。由此可见,滑窗在两个维度都会移动。  

  滤波与卷积本质上是一致的。回想一维滤波器或者说一维卷积运算。输入数据在时间维度上依次进入卷积窗口。当前的输出取决于滤波器系数和卷积窗内的输入数据,执行的运算也是相乘相加。至此,可以看到二维滤波器只是卷积窗由一维变为二维,同时,输入数据也由一维变为二维。   相乘相加是否可以转换成矩阵乘呢?答案是肯定的。以下图为例。首先,我们把每个激活区域的输入数据取出来由二维矩阵变为一维行向量。滑窗步进为1,共4个激活区域,所以可得到4个一维向量。这4个一维向量构成一个4x9的二维矩阵。其次,我们将滤波器按照先行再列的方式“拉直”,构成一个一维列向量,这个列向量维度为9x1。显然,这时4个激活区域构成的矩阵与滤波器系数构成的列向量是可乘的,满足了矩阵乘法的要求。之后就可以直接执行矩阵乘法获得输出结果。

CNN中的卷积运算本质上就算二维滤波器,是矩阵对应元素相乘相加。但在工程实现时,则将其采用上图所示方法转变为矩阵乘法,从而提高运算效率。

 

 

原文标题:卷积神经网络中会什么会有矩阵乘法?

文章出处:【微信公众号:Lauren的FPGA】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分