当前位置: 首页 > 专利查询>浙江大学专利>正文

一种适合硬件的卷积神经网络压缩方法技术

技术编号:21142190 阅读:51 留言:0更新日期:2019-05-18 05:28
本发明专利技术提供一种适合硬件的卷积神经网络压缩方法,包括如下步骤:S1)采用参数全为3bit的All Conv Net卷积网络结构在数据集上训练和测试;S2)设计反向传播函数计算梯度;S3)针对新的计算方法,设计FPGA的卷积阵列;S4)在深度学习框架下编写深度学习模型,并进行模型训练和测试,存储训练后的模型;S5)在python上记录模型训练的accuracy和loss。本发明专利技术通过将卷积网络中的参数都用3bit的特殊值代替,同时设计新的反向传播函数以避免在参数替换过程中造成梯度消失,从而实现适用于FPGA、减少FPGA中DSP资源以及参数存储空间的卷积神经网络压缩方法。

【技术实现步骤摘要】
一种适合硬件的卷积神经网络压缩方法
本专利技术涉及卷积神经网络
,具体涉及一种适合硬件的卷积神经网络压缩方法。
技术介绍
随着深度学习的发展,各种卷积神经网络的参数越来越庞大。传统卷积网络的训练和测试都是在PC上进行的,训练过程中会获得庞大的参数量,且在测试过程中需要用到这些参数并进行大量复杂的运算,庞大的参数量及运算使得这种卷积网络不能很好地移植到移动设备上。FPGA(现场可编程门阵列)由于其并行计算的优势,是一种很好的计算卷积神经网络的硬件设备,但是也受限于卷积网络的参数量。针对上述问题,急需一种可压缩卷积网络参数量的方法,以保证在硬件(FPGA)上计算卷积网络。
技术实现思路
本专利技术的目的是提供一种适用于FPGA、减少FPGA中DSP资源以及参数存储空间的卷积神经网络压缩方法。为了达到上述目的,本专利技术通过以下技术方案来实现:一种适合硬件的卷积神经网络压缩方法,包括如下步骤:S1)采用参数全为3bit的AllConvNet卷积网络结构在数据集上训练和测试;S2)设计反向传播函数计算梯度xk=relu(wk·xk-1+bk),其中,xk为第k层的输入,wk为第k层的权值矩阵,relu()为RELU激活函数,bk为偏置项;S3)针对步骤S2)的计算方法,设计FPGA的卷积阵列;S4)在深度学习框架下编写深度学习模型,并进行模型训练和测试,存储训练后的模型;S5)在python上记录模型训练的accuracy和loss。进一步地,在步骤S2)中,存储参数时,对权值矩阵进行3bit编码。进一步地,在步骤S2)中,对权值矩阵中每个权值扩展权值精度,即用0或1表示是否用到此权值,然后对所有为1的权值相加,可做到3bit到7bit变精度的权值。进一步地,在步骤S2)中,引入BatchNormalization后,偏置项bk为冗余项,即xk=relu(BN(wk·xk-1))。本专利技术与现有技术相比,具有以下优点:本专利技术一种适合硬件的卷积神经网络压缩方法,通过将卷积网络中的参数都用3bit的特殊值代替,同时设计新的反向传播函数以避免在参数替换过程中造成梯度消失,从而实现适用于FPGA、减少FPGA中DSP资源以及参数存储空间的卷积神经网络压缩方法。本专利技术的卷积神经网络压缩方法,在MNIST、SVHN、Cifar10、Cifar100四个数据集上测试准确率都较高,以及对比FPGA上计算速度有所提升,资源使用率也有所下降。附图说明图1是本专利技术一种适合硬件的卷积神经网络压缩方法的流程示意图。图2是现有技术的卷积阵列示意图。图3是本专利技术一种适合硬件的卷积神经网络压缩方法的FPGA卷积阵列示意图。具体实施方式下面结合附图,对本专利技术的实施例作进一步详细的描述。一种适合硬件的卷积神经网络压缩方法,如图1所示,包括如下步骤:S1)采用参数全为3bit的AllConvNet卷积网络结构在数据集上训练,网络结构如下:S2)设计反向传播函数计算梯度反向传播函数的设计过程如下:xk=relu(wk·xk-1+bk);其中,xk为第k层的输入,wk为第k层的权值矩阵,relu()为RELU激活函数,bk为偏置项。引入BatchNormalization后,偏置项bk为冗余项,即xk=relu(BN(wk·xk-1))。若想将网络中的权值压缩到特殊的3bit,则需要用到特殊的阶梯函数,即令则m个样本的mini-batch的损失函数为梯度为其中导致梯度消失,无法用梯度下降算法来训练网络;然后考虑构造新的函数这个函数中隐含着损失函数中的正则项,即此时,梯度不再消失,仍然可以适用梯度下降算法来更新权值;其中α为学习率。虽然权值无法一步压缩到特殊值上,但是经过网络训练的若干步后在步骤S2)中获得的新的反向传播函数为用于反向传播计算梯度;在存储参数时,对权值进行编码,用3bit表示如下:权值精度也可改变,进行扩展。用0或1表示是否用到此权值,然后对所有为1的权值相加,即可做到从3bit到7bit变精度的权值。例如,011000表示:0*(-1/2)+1*(-1/4)+1*(-1/8)+0*(0)+0*(1/8)+0*(1/4)+0*(1/2)=-0.375。步骤S2)的计算梯度只用于卷积网络结构在数据集上的训练,训练完成后再进行卷积网络结构在数据集上的测试。S3)针对步骤S2)的计算方法,设计FPGA的卷积阵列。如图2所示为现有技术的卷积阵列示意图,如图3所示为本专利技术的FPGA卷积阵列设计示意图。如图2、3所示,加号代表加法器,乘法代表乘法器,箭头为移位操作,相比较可得,本专利技术将现有技术的乘法器改为位移操作,减少了DSP的使用,能更大限度地提高并行度,从而使卷积网络的计算速度大大提高。S4)在深度学习框架下编写深度学习模型,并进行模型训练和测试,存储训练后的模型。深度学习框架下的伪代码如下:S5)在python上记录模型训练的accuracy和loss。本专利技术的卷积神经网络压缩方法,在MNIST、SVHN、Cifar10、Cifar100四个数据集上测试准确率都较高,以及对比FPGA上计算速度有所提升,资源使用率也有所下降。具体测试结果如下:从上述测试结果可以看出,本专利技术模型的参数是最少的,同时分类的误差也较低。以上所述仅是本专利技术优选实施方式,应当指出,对于本
的普通技术人员,在不脱离本专利技术构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本专利技术保护范围内。本文档来自技高网
...

【技术保护点】
1.一种适合硬件的卷积神经网络压缩方法,其特征在于包括如下步骤:S1)采用参数全为3bit的All Conv Net卷积网络结构在数据集上训练和测试;S2)设计反向传播函数计算梯度x

【技术特征摘要】
1.一种适合硬件的卷积神经网络压缩方法,其特征在于包括如下步骤:S1)采用参数全为3bit的AllConvNet卷积网络结构在数据集上训练和测试;S2)设计反向传播函数计算梯度xk=relu(wk·xk-1+bk),其中,xk为第k层的输入,wk为第k层的权值矩阵,relu()为RELU激活函数,bk为偏置项;S3)针对步骤S2)的计算方法,设计FPGA的卷积阵列;S4)在深度学习框架下编写深度学习模型,并进行模型训练和测试,存储训练后的模型;S5)在python上记录模型训练的accuracy和loss。2.根据权利要...

【专利技术属性】
技术研发人员:刘勇陈军
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江,33

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

1