[发明专利]基于Winograd算法和近似乘法器的高效卷积实现方法及装置有效
申请号: | 202110827665.X | 申请日: | 2021-07-22 |
公开(公告)号: | CN113283591B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 杜力;张宸硕;杜源 | 申请(专利权)人: | 南京大学 |
主分类号: | G06N3/04 | 分类号: | G06N3/04;G06F7/523;G06F17/16 |
代理公司: | 北京弘权知识产权代理有限公司 11363 | 代理人: | 逯长明;许伟群 |
地址: | 210023 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 winograd 算法 近似 乘法器 高效 卷积 实现 方法 装置 | ||
1.一种基于Winograd算法和近似乘法器的高效卷积实现方法,其特征在于,所述方法用于计算卷积层中卷积核大小为3×3,步长为1的卷积运算,所述方法包括:
获取初始特征图;
将所述初始特征图分割成多个第一矩阵构成的矩阵序列,其中每一个第一矩阵包含6行6列的矩阵元素,矩阵序列中相邻矩阵之间具有2行或2列相重叠的矩阵元素;获取每一个所述第一矩阵对应一个输入矩阵;
获取初始特征图的初始卷积权重;
根据所述初始卷积权重,计算得到包含6行6列矩阵元素的第二矩阵,作为Winograd卷积权重;
将各输入矩阵分别和Winograd卷积权重使用近似乘法器进行运算,得到多个输出矩阵,其中,每一个输入矩阵对应一个输出矩阵;
将多个输出矩阵进行拼接,得到输出特征图;
所述近似乘法器的计算过程如下:
将所述输入矩阵和Winograd卷积权重分别量化为两个操作数;
分别对两个操作数进行截取,获得输入矩阵对应的第一近似乘法器操作数和Winograd卷积权重对应的第二近似乘法器操作数;
将输入矩阵对应的第一近似乘法器操作数和Winograd卷积权重对应的第二近似乘法器操作数进行乘法计算;
最后对乘法计算结果数进行向左移位操作,从而得到最终的乘法结果,其中,移位的数量是先前截取后的最后剩余段的长度和;
其中,对操作数进行截取的方法包括:
如果操作数的首位是0,且在紧接着首位的探测段中存在取值为1的比特位,则从当前探测段首位开始向后截取预定长度的比特段,并加上首位作为近似乘法器操作数;
或者,如果操作数的首位是0,且所述探测段不存在取值为1的比特位,则直接在探测段后截取预定长度的比特段,作为近似乘法器操作数;
或者,如果操作数的首位是1,且所述探测段存在取值为0的比特位,则从当前探测段首位开始向后截取预定长度的比特段,并加上首位作为近似乘法器操作数;
或者,如果操作数的首位是1,且所述探测段不存在取值为0的比特位,则直接在探测段后截取预定长度的比特段,作为近似乘法器操作数。
2.根据权利要求1所述的方法,其特征在于,所述输入矩阵由第一矩阵、第一常系数矩阵及第一常系数矩阵转置矩阵相乘得到。
3.根据权利要求1所述的方法,其特征在于,所述Winograd卷积权重由初始卷积权重、第二常系数矩阵及第二常系数矩阵转置矩阵相乘得到。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述输出矩阵使用以下公式进行计算:
;
其中,Y为输出矩阵,A为第三常系数矩阵,AT为A的转置矩阵,GgGT为Winograd卷积权重,BTdB为输入矩阵,为近似乘法器运算。
5.根据权利要求1所述的方法,其特征在于,所述Winograd卷积权重使用信号-量化噪音比进行量化精度的评估,具体使用以下公式计算:
;
其中,SQNR为信号-量化噪音比,wi表示原始的浮点数卷积权重,wqi表示量化后的定点数卷积权重。
6.一种基于Winograd算法和近似乘法器的高效卷积实现装置,其特征在于,所述装置用于计算卷积层中卷积核大小为3×3,步长为1的卷积运算,所述装置包括:
初始特征图获取模块,用于获取初始特征图;
输入矩阵获取模块,用于将所述初始特征图分割成多个第一矩阵构成的矩阵序列,其中每一个第一矩阵包含6行6列的矩阵元素,矩阵序列中相邻矩阵之间具有2行或2列相重叠的矩阵元素,获取每一个所述第一矩阵对应一个输入矩阵;初始卷积权重获取模块,用于获取初始特征图的初始卷积权重;
Winograd卷积权重获取模块,用于根据所述初始卷积权重,计算得到包含6行6列矩阵元素的第二矩阵,作为Winograd卷积权重;
输出矩阵获取模块,用于将各输入矩阵分别和Winograd卷积权重使用近似乘法器进行运算,得到多个输出矩阵,其中,每一个输入矩阵对应一个输出矩阵;
输出特征图获取模块,将多个输出矩阵进行拼接,得到输出特征图;
所述输出矩阵获取模块包括近似乘法器单元,所述近似乘法器单元用于执行以下操作:
将输入矩阵和Winograd卷积权重分别量化为两个操作数;
分别对两个操作数进行截取,获得输入矩阵对应的第一近似乘法器操作数和Winograd卷积权重对应的第二近似乘法器操作数;
将输入矩阵对应的第一近似乘法器操作数和Winograd卷积权重对应的第二近似乘法器操作数进行乘法计算;
最后对乘法计算结果数进行向左移位操作,从而得到最终的乘法结果,其中,移位的数量是先前截取后的最后剩余段的长度和;
其中,对操作数进行截取的方法包括:
如果操作数的首位是0,且在紧接着首位的探测段中存在取值为1的比特位,则从当前探测段首位开始向后截取预定长度的比特段,并加上首位作为近似乘法器操作数;
或者,如果操作数的首位是0,且所述探测段不存在取值为1的比特位,则直接在探测段后截取预定长度的比特段,作为近似乘法器操作数;
或者,如果操作数的首位是1,且所述探测段存在取值为0的比特位,则从当前探测段首位开始向后截取预定长度的比特段,并加上首位作为近似乘法器操作数;
或者,如果操作数的首位是1,且所述探测段不存在取值为0的比特位,则直接在探测段后截取预定长度的比特段,作为近似乘法器操作数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110827665.X/1.html,转载请声明来源钻瓜专利网。