[发明专利]一种卷积im2col展开计算方法在审
申请号: | 202111486370.7 | 申请日: | 2021-12-07 |
公开(公告)号: | CN114254257A | 公开(公告)日: | 2022-03-29 |
发明(设计)人: | 尹元浩;张博武;王字满 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G06F17/15 | 分类号: | G06F17/15;G06F17/16 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 李微微 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 卷积 im2col 展开 计算方法 | ||
本发明的一种卷积im2col展开计算方法,优化了矩阵的im2col展开的方法,不采用矩阵卷积核窗口依次滑动的策略,采用了多次矩阵变换的方法,减少了循环次数,在GPU计算中,比传统的展开方法快10~30倍。
技术领域
本发明属于卷积神经网络计算方法技术领域,具体涉及一种卷积im2col展开计算方法。
背景技术
随着计算机人工智能技术的飞速发展,深度学习技术领域中的卷积神经网络CNN计算方法自从在ImageNet竞赛中引入以来,该技术便在图像分类、模式识别和多媒体压缩等各种领域被广泛采用。该技术的计算时间瓶颈主要是在卷积计算,而卷积计算的时间瓶颈主要在卷积矩阵im2col展开处。采用一个更快的卷积矩阵im2col展开计算方法,可以提升卷积神经网络的训练速度,减小卷积神经网络的反应时间,这在自动驾驶等AI决策领域里有重要意义。卷积计算方法即为令中间的卷积核窗口依次滑过左方的卷积矩阵,每次滑动一个或多个方格。每滑动到一个位置,令卷积核的每个数字与卷积核的对应位置的数字相乘,所有乘积再求和,记录于右侧矩阵对应位置中。当滑动到下一个位置时再做上述运算,直到卷积矩阵被卷积核窗口滑动完为止,右侧的矩阵即为该卷积计算的结果。如图1所示(上图只展示了卷积核在第一个位置和最后一个位置得出的卷积结果)。
im2col展开是将卷积核窗口每滑动到一个位置,便将该处的数字展开成一维矩阵。待滑动结束后,所有的一维矩阵组合成二维矩阵,该矩阵即为卷积矩阵的im2col展开形式,现有的卷积技术多是用用计算机去执行窗口滑动的策略,当窗口滑动到一个位置时,令窗口里的所有数字展开排列成一行,直到滑动结束形成一个新的矩阵(im2col计算方法),再令卷积核排列成一列。展开的卷积核与展开的卷积矩阵点乘,得出的结果即为卷积结果。这样的方法在矩阵展开的过程中,因为窗口滑动的次数较多,会拖慢卷积运算速度。
发明内容
有鉴于此,本发明的目的是提供一种卷积im2col展开计算方法,可以显著提高卷积计算速度。
一种卷积im2col展开计算方法,包括:
步骤1、设需要进行卷积运算的数据为卷积矩阵a,大小设为ma×na;卷积核c的大小设为mc×nc;卷积计算得到的目标矩阵z,其大小设为(ma-mc+1)×(na-nc+1);
步骤2、将卷积矩阵a的中每一行排列展开成小块矩阵,具体为:
针对第一个小块矩阵:
第一行从卷积矩阵a第一行取第一个元素开始的nc个元素;
第二行从卷积矩阵a第一行取第二个元素开始的nc个元素;
第三行从卷积矩阵a第一行取第三个元素开始的nc个元素;
以此类推,最后一行从卷积矩阵a第一行取第(na-nc+1)个元素至第na个元素,则得到第一个小块矩阵;
针对第二小矩阵:
第一行从卷积矩阵a第二行取第一个元素开始的nc个元素;
第二行从卷积矩阵a第二行取第二个元素开始的数nc个元素;
第三行从卷积矩阵a第二行取第三个元素开始的nc个元素;
以此类推,最后一行从第二行取第(na-nc+1)个元素至第na个元素,则得到第二个小块矩阵;以此类推,直到得到第ma个小块矩阵;
步骤3、将小块矩阵再排列成一个大的展开矩阵,具体为:
从第一个小块矩阵开始,向后取mc个小块矩阵拼接成第一行小块矩阵;从第二个小块矩阵开始,向后取mc个小块矩阵拼接成第二行小块矩阵;从第三个小块矩阵开始,向后取mc个小块矩阵拼接成第三行小块矩阵;以此类推,直到第ma-mc+1个小块矩阵,则第ma-mc+1至第ma个小块矩阵作为最后一行小块矩阵,得到展开矩阵;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111486370.7/2.html,转载请声明来源钻瓜专利网。