深度神经网络的加速与压缩方法及装置制造方法及图纸

技术编号:18554390 阅读:32 留言:0更新日期:2018-07-28 11:14
本发明专利技术属于神经网络技术领域,具体涉及一种深度神经网络的加速与压缩方法及装置。旨在解决现有技术对深度神经网络进行压缩和加速占用大量内存并且精度下降的问题。本发明专利技术提供深度神经网络的加速与压缩方法,包括获取原始深度神经网络中各层的输入数据与参数矩阵;基于输入数据与参数矩阵,计算原始深度神经网络中各层的二值矩阵与浮点系数;将二值矩阵替换原始深度神经网络各层的参数矩阵,并在原始深度神经网络中构建尺度因子层,基于浮点系数初始化尺度因子层的参数,得到新的深度神经网络。本发明专利技术的方案能够将神经网络的网络参数二值化,占用更少的内存且提升精度。

【技术实现步骤摘要】
深度神经网络的加速与压缩方法及装置
本专利技术属于神经网络
,具体涉及一种深度神经网络的加速与压缩方法及装置。
技术介绍
近年来随着深度学习的发展,深度神经网络在计算机视觉、语音、文本等领域中都取得了巨大的成功,这也推动着深度学习在无人驾驶、智能家居、视频监控等任务中的应用。随着深度网络的发展,深度神经网络变得更深,同时参数量和计算量也变得更大。深度神经网络巨大的参数量和计算复杂度在提升网络性能的同时也使得部署深度网络变得更加困难,特别地,由于移动手机和嵌入式设备的计算性能较低,其内存和电量有限,将深度神经网络部署到这些设备上会面临着两方面的挑战:一方面,深度神经网络巨大的计算复杂度使得网络前馈运行缓慢,这一点对于很多实时的应用往往是不能接受的;另一方面,深度网络巨大的参数量也给深度网络的部署带来了困难:首先,大量的参数使得网络模型存储变大,占用更多的硬盘存储;其次,深度网络需要更多的运行内存;最后,大量的内存访问会消耗大量的电量,给移动设备和嵌入式设备的续航带来很大的挑战。针对深度神经网络在参数多、运算量大的情况下进行压缩和加速的问题,专利CN106127297A公开了一种基于张量分解的深度卷积神经网络的加速与压缩方法,具体涉及:获取原始深度卷积神经网络;对原始深度卷积神经网络中各层的权值张量进行张量分解,得到多个低秩子张量,用多个低秩子张量替换原始深度卷积神经网络中各层的权值张量,获得新的深度卷积神经网络。现有技术的方法是对深度卷积神经网络各层进行浮点量运算,而浮点参数会占用大量的存储和内存,往往会更多地消耗移动设备和嵌入式设备上的电量,同时在一些硬件平台下,例如FPGA,浮点计算会慢很多,此外,现有技术提出的某些方法只针对全连接神经网络框架,并且进行压缩或加速后神经网络的精度将会下降。因此,如何提出一种解决上述问题的方案是本领域技术人员目前需要解决的问题。
技术实现思路
为了解决现有技术中的上述问题,即为了解决现有技术对深度神经网络进行压缩和加速占用大量内存并且精度下降的问题,本专利技术提供了一种深度神经网络的加速与压缩方法,所述方法包括:步骤S1:获取原始深度神经网络中各层的输入数据与参数矩阵;步骤S2:基于所述输入数据与参数矩阵,计算所述原始深度神经网络中各层的二值矩阵与浮点系数;步骤S3:将所述二值矩阵替换所述原始深度神经网络各层的参数矩阵,并在所述原始深度神经网络中构建尺度因子层,基于所述浮点系数初始化所述尺度因子层的参数,得到新的深度神经网络。在上述方法的优选技术方案中,所述步骤S2具体包括:步骤S21:随机初始化所述二值矩阵与浮点系数,设定所述原始深度神经网络的卷积核个数为T,令i从0到T-1并行独立执行下述步骤;步骤S22:使用符号函数初始化所述二值矩阵;通过求解所述参数矩阵对应向量的范数,并用所述参数矩阵对应向量的范数除以所述参数矩阵对应向量的长度,初始化所述浮点系数;步骤S23:对初始化后的二值矩阵和浮点系数进行迭代更新。在上述方法的优选技术方案中,所述步骤S23具体包括:步骤S231:设定迭代次数为M,重复执行如下步骤;步骤S232:根据公式以及S=XTW更新所述浮点系数,其中,X表示所述输入数据,W表示所述参数矩阵,B表示所述二值矩阵,表示XTBi的范数,Λii表示所述浮点系数;步骤S233:设定Z=Λii·X,q=Λii·XSi,b为所述二值矩阵对应向量Bi的第j个元素,为所述二值矩阵对应向量Bi去掉b后的向量,qj为向量q的第j个元素,v表示矩阵Z的第j行,为矩阵Z去掉第j行之后的矩阵;令j从0到N,根据公式更新Bi的第j个元素,其中,N表示向量Bi的长度。在上述方法的优选技术方案中,所述步骤S3还包括:步骤S31:基于所述二值矩阵对所述参数矩阵进行初始化;步骤S32:在所述原始深度神经网络的前馈过程中,对所述参数矩阵进行符号二值化并赋值给所述二值矩阵,对赋值后的二值矩阵进行所述原始深度神经网络的前馈运算和后馈运算,得到所述原始深度神经网络各层的梯度G;步骤S33:使用梯度G对所述参数矩阵进行更新。本专利技术的另一方面还提供一种深度神经网络的加速与压缩装置,所述装置包括:获取模块,所述获取装置被配置为获取原始深度神经网络中各层的输入数据与参数矩阵;计算模块,所述计算模块被配置为基于所述输入数据与参数矩阵,计算所述原始深度神经网络中各层的二值矩阵与浮点系数;替换模块,所述替换模块被配置为将所述二值矩阵替换所述原始深度神经网络各层的参数矩阵,并在所述原始深度神经网络中构建尺度因子层,基于所述浮点系数初始化所述尺度因子层的参数,得到新的深度神经网络。在上述方法的优选技术方案中,所述计算模块具体包括:第一设定模块,所述设定模块被配置为随机初始化所述二值矩阵与浮点系数,设定所述原始深度神经网络的卷积核个数为T,令i从0到T-1并行独立运行下述模块;初始化模块,所述初始化模块被配置为使用符号函数初始化所述二值矩阵,通过求解所述参数矩阵对应向量的范数,并用所述参数矩阵对应向量的范数除以所述参数矩阵对应向量的长度,初始化所述浮点系数;第一更新模块,所述更新模块被配置为对初始化后的二值矩阵和浮点系数进行迭代更新。在上述方法的优选技术方案中,所述第一更新模块还包括:第二设定模块,所述第二设定模块被配置为设定迭代次数为M,重复运行下述模块;第二更新模块:所述第二更新模块被配置为根据公式以及S=XTW更新所述浮点系数,其中,X表示所述输入数据,W表示所述参数矩阵,B表示所述二值矩阵,表示XTBi的范数,Λii表示所述浮点系数;第三更新模块,所述第三更新模块被配置为设定Z=Λii·X,q=Λii·XSi,b为所述二值矩阵对应向量Bi的第j个元素,为所述二值矩阵对应向量Bi去掉b后的向量,qj为向量q的第j个元素,v表示矩阵Z的第j行,为矩阵Z去掉第j行之后的矩阵;令j从0到N,根据公式更新Bi的第j个元素,其中,N表示向量Bi的长度。在上述方法的优选技术方案中,所述替换模块还包括:代理模块,所述代理模块被配置为基于所述二值矩阵对所述参数矩阵进行初始化;赋值模块,所述赋值模块被配置为在所述原始深度神经网络的前馈过程中,对所述参数矩阵进行符号二值化并赋值给所述二值矩阵,对赋值后的二值矩阵进行所述原始深度神经网络的前馈运算和后馈运算,得到所述原始深度神经网络各层的梯度G;第四更新模块,所述第四更新模块被配置为使用梯度G对所述参数矩阵进行更新。本专利技术的第三方面提供一种存储装置,其中存储有多条程序,所述程序适于由处理器加载并执行如上述任一项所述的深度神经网络的加速与压缩方法。本专利技术的第四方面提供一种处理装置,包括处理器、存储设备;处理器,适于执行各条程序;存储设备,适于存储多条程序;所述程序适于由处理器加载并执行如上述任一项所述的深度神经网络的加速与压缩方法。与最接近的现有技术相比,本专利技术提供一种深度神经网络的加速与压缩方法,包括获取原始深度神经网络中各层的输入数据与参数矩阵;基于输入数据与参数矩阵,计算原始深度神经网络中各层的二值矩阵与浮点系数;将二值矩阵替换原始深度神经网络各层的参数矩阵,并在原始深度神经网络中构建尺度因子层,基于浮点系数初始化尺度因子层的参数,得到新的深度神经网络。上述技术方案至本文档来自技高网
...

【技术保护点】
1.一种深度神经网络的加速与压缩方法,其特征在于,所述方法包括:步骤S1:获取原始深度神经网络中各层的输入数据与参数矩阵;步骤S2:基于所述输入数据与参数矩阵,计算所述原始深度神经网络中各层的二值矩阵与浮点系数;步骤S3:将所述二值矩阵替换所述原始深度神经网络各层的参数矩阵,并在所述原始深度神经网络中构建尺度因子层,基于所述浮点系数初始化所述尺度因子层的参数,得到新的深度神经网络。

【技术特征摘要】
1.一种深度神经网络的加速与压缩方法,其特征在于,所述方法包括:步骤S1:获取原始深度神经网络中各层的输入数据与参数矩阵;步骤S2:基于所述输入数据与参数矩阵,计算所述原始深度神经网络中各层的二值矩阵与浮点系数;步骤S3:将所述二值矩阵替换所述原始深度神经网络各层的参数矩阵,并在所述原始深度神经网络中构建尺度因子层,基于所述浮点系数初始化所述尺度因子层的参数,得到新的深度神经网络。2.根据权利要求1所述的方法,其特征在于,所述步骤S2具体包括:步骤S21:随机初始化所述二值矩阵与浮点系数,设定所述原始深度神经网络的卷积核个数为T,令i从0到T-1并行独立执行下述步骤;步骤S22:使用符号函数初始化所述二值矩阵;通过求解所述参数矩阵对应向量的范数,并用所述参数矩阵对应向量的范数除以所述参数矩阵对应向量的长度,初始化所述浮点系数;步骤S23:对初始化后的二值矩阵和浮点系数进行迭代更新。3.根据权利要求2所述的方法,其特征在于,所述步骤S23具体包括:步骤S231:设定迭代次数为M,重复执行如下步骤;步骤S232:根据公式以及S=XTW更新所述浮点系数,其中,X表示所述输入数据,W表示所述参数矩阵,B表示所述二值矩阵,表示XTBi的范数,Λii表示所述浮点系数;步骤S233:设定Z=Λii·X,q=Λii·XSi,b为所述二值矩阵对应向量Bi的第j个元素,为所述二值矩阵对应向量Bi去掉b后的向量,qj为向量q的第j个元素,v表示矩阵Z的第j行,为矩阵Z去掉第j行之后的矩阵;令j从0到N,根据公式更新Bi的第j个元素,其中,N表示向量Bi的长度。4.根据权利要求1所述的方法,其特征在于,所述步骤S3还包括:步骤S31:基于所述二值矩阵对所述参数矩阵进行初始化;步骤S32:在所述原始深度神经网络的前馈过程中,对所述参数矩阵进行符号二值化并赋值给所述二值矩阵,对赋值后的二值矩阵进行所述原始深度神经网络的前馈运算和后馈运算,得到所述原始深度神经网络各层的梯度G;步骤S33:使用梯度G对所述参数矩阵进行更新。5.一种深度神经网络的加速与压缩装置,其特征在于,所述装置包括:获取模块,所述获取装置被配置为获取原始深度神经网络中各层的输入数据与参数矩阵;计算模块,所述计算模块被配置为基于所述输入数据与参数矩阵,计算所述原始深度神经网络中各层的二值矩阵与浮点系数;替换模块,所述替换模块被配置为将所述二值矩阵...

【专利技术属性】
技术研发人员:程健胡庆浩
申请(专利权)人:中国科学院自动化研究所
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1