发明内容
有鉴于此,本发明实施例提供一种应用于神经网络芯片的预测方法和预测装置、服务器及可读存储介质,能够降低数据带宽,节省计算时间,并进一步提高计算效率。
本发明的一个方面提供一种应用于神经网络芯片的预测方法,该方法包括:在神经网络训练过程中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间;对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率;基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,包括:以2的n次方为界,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,其中n为整数,该方法还包括:以2的n次方为界,对当前层的M个权重数据进行划分,得到当前层的M个权重数据分布区间,其中n为整数;对当前层的M个权重数据分布区间中的每个权重数据分布区间内的权重数据进行统计,得到每个权重数据分布区间内的权重数据的数量占M个权重数据的总体数量的比率;基于M个权重数据分布区间对应的比率和预设的比特宽度,对当前层的M个权重数据进行比特宽度约束,得到M个权重数据分布区间中的N个分布区间的第二起始比特和第二终止比特,其中比特宽度为第二终止比特与第二起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第二起始比特和第二终止比特,对当前层的M个权重数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,该方法还包括:以2的n次方为界,对当前层的M个偏置数据进行划分,得到当前层的M个偏置数据分布区间,其中n为整数;对当前层的M个偏置数据分布区间中的每个偏置数据分布区间内的偏置数据进行统计,得到每个偏置数据分布区间内的偏置数据的数量占M个偏置数据的总体数量的比率;基于M个偏置数据分布区间对应的比率和预设的比特宽度,对当前层的M个偏置数据进行比特宽度约束,得到M个偏置数据分布区间中的N个分布区间的第三起始比特和第三终止比特,其中比特宽度为第三终止比特与第三起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第三起始比特和第三终止比特,对当前层的M个偏置数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,当前层为卷积层,该方法还包括:在神经网络训练过程中,对神经网络的输入层的M个输入数据进行数据预处理,得到输入层的M个输出数据,将输入层的M个输出数据作为卷积层的M个输入数据;以及对卷积层的M个输入数据进行卷积,得到卷积层的M个输出数据。
在本发明的一个实施例中,当前层为激活层,该方法还包括:对激活层的M个输入数据进行激活,得到激活层的M个输出数据。
在本发明的一个实施例中,当前层为池化层,该方法还包括:对池化层的M个输入数据进行采样,得到池化层的M个输出数据。
在本发明的一个实施例中,当前层为全连接层,该方法还包括:对全连接层的M个输入数据进行分类,得到全连接层的M个输出数据。
在本发明的一个实施例中,预设的比特宽度在1比特到32比特的范围内。
在本发明的一个实施例中,预设的比特宽度为8比特。
本发明的另一个方面提供一种应用于神经网络芯片的预测装置,该装置包括:划分模块,用于在神经网络训练过程中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间;统计模块,用于对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率;约束模块,用于基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及预测模块,用于在神经网络预测过程中,基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,划分模块还以2的n次方为界,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,其中n为整数,并且划分模块还以2的n次方为界,对当前层的M个权重数据进行划分,得到当前层的M个权重数据分布区间,其中n为整数,统计模块还对当前层的M个权重数据分布区间中的每个权重数据分布区间内的权重数据进行统计,得到每个权重数据分布区间内的权重数据的数量占M个权重数据的总体数量的比率,约束模块还基于M个权重数据分布区间对应的比率和预设的比特宽度,对当前层的M个权重数据进行比特宽度约束,得到M个权重数据分布区间中的N个分布区间的第二起始比特和第二终止比特,其中比特宽度为第二终止比特与第二起始比特之间的距离,N个分布区间对应的比率满足预设规则,以及预测模块还在神经网络预测过程中,基于第二起始比特和第二终止比特,对当前层的M个权重数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,划分模块还以2的n次方为界,对当前层的M个偏置数据进行划分,得到当前层的M个偏置数据分布区间,其中n为整数,统计模块还对当前层的M个偏置数据分布区间中的每个偏置数据分布区间内的偏置数据进行统计,得到每个偏置数据分布区间内的偏置数据的数量占M个偏置数据的总体数量的比率,约束模块还基于M个偏置数据分布区间对应的比率和预设的比特宽度,对当前层的M个偏置数据进行比特宽度约束,得到M个偏置数据分布区间中的N个分布区间的第三起始比特和第三终止比特,其中比特宽度为第三终止比特与第三起始比特之间的距离,N个分布区间对应的比率满足预设规则,以及预测模块还在神经网络预测过程中,基于第三起始比特和第三终止比特,对当前层的M个偏置数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的一个实施例中,当前层为卷积层,预测装置还包括:预处理模块,用于在神经网络训练过程中,对神经网络的输入层的M个输入数据进行数据预处理,得到输入层的M个输出数据,将输入层的M个输出数据作为卷积层的M个输入数据;以及卷积模块,用于对卷积层的M个输入数据进行卷积,得到卷积层的M个输出数据。
在本发明的一个实施例中,当前层为激活层,预测装置还包括:激活模块,用于对激活层的M个输入数据进行激活,得到激活层的M个输出数据。
在本发明的一个实施例中,当前层为池化层,该预测装置还包括:采样模块,用于对池化层的M个输入数据进行采样,得到池化层的M个输出数据。
在本发明的一个实施例中,当前层为全连接层,该预测装置还包括:分类模块,用于对全连接层的M个输入数据进行分类,得到全连接层的M个输出数据。
在本发明的一个实施例中,预设的比特宽度在1比特到32比特的范围内。
在本发明的一个实施例中,预设的比特宽度为8比特。
本发明的再一个方面提供一种服务器,包括:存储器、处理器及存储在存储器中并可在处理器中运行的可执行指令,其中,处理器执行可执行指令时实现如上所述的方法。
本发明的又一个方面提供一种计算机可读存储介质,其上存储有计算机可执行指令,其中,可执行指令被处理器执行时实现如上所述的方法。
根据本发明实施例提供的技术方案,通过对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率,基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,以及基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测,降低了数据带宽,并因此节省了计算时间,从而提高了计算效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。根据本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本发明一示例性实施例示出的一种应用于神经网络芯片的预测方法的流程图。如图1所示,该方法包括:
110:在神经网络训练过程中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间。
在本发明实施例中,神经网络可以包括多个层,例如,输入层(Input Layer)、多个卷积层(Convolutional Layer)、至少一个全连接层和输出层(Output Layer);另外,每两个卷积层之间还可以添加一激活层(Activation Layer),或者每两个卷积层之间还可以设置一池化层(Pooling Layer)并在该池化层后添加一激活层。激活层可以由激活函数来实现。
例如,输入层可以直接作用于原始的输入数据,并且对于输入是图像来说,输入数据是图像的像素值。卷积层也称为特征提取层,用于利用多个卷积核提取输入数据的特征,并且每一个不同的卷积核提取输入数据的特征都不相同,卷积层的卷积核的数量越多,能够提取的输入数据的特征就越多。激活函数可以包括但不限于Sigmoid函数、ReLU(Rectified Linear Unit)函数、Tanh函数、Softmax函数等,目前使用最多的激活函数是ReLU函数,因为其收敛更快,并且能保持同样效果。池化层也称为下采样层(SubsampingLayer),用于对特征图进行下采样,降低特征图的分辨率,通过池化可以降低卷积层输出的特征向量,同时改善结果(不易出现过拟合);最常见的池化操作是最大池化(Max Pooling)和平均池化(Mean Pooling),最大池化是选取图像区域的最大值作为该区域池化后的值,而平均池化是计算图像区域的平均值作为该区域池化后的值。全连接层在整个卷积神经网络中起到“分类器”的作用。输出层神经节点的数目是根据具体应用任务来设定的,如果是分类任务,输出层通常是一个分类器,通常是Softmax分类器。
需要说明的是,卷积层、激活函数、池化层和全连接层的数量可以根据实际需要设置,本发明对此不作限制。另外,本发明的神经网络可以包括但不限于卷积神经网络(Convolutional Neural Network,CNN)、深度置信网络(Deep Belief Network,DBN)、自动编码器(Auto Encoder)、限制波尔兹曼机(Restricted Boltzmann Machine,RBM)等。进一步地,本发明不限于如上所述的神经网络芯片,而是可以应用到其它芯片,例如图形处理器(Graphics Processing Unit,GPU)、数字信号处理(Digital Signal Processing,DSP)芯片等。
在神经网络训练过程中,以2的n次方(即2n)为界,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间。这里,n可以为任意整数,例如,-1、0、2等。
具体地,以n为-2到7为例,可以得到9个区间,分别用区间1到区间9表示,其中,2-1>区间1≥2-2,20>区间2≥2-1,21>区间3≥20,22>区间4≥21,23>区间5≥22,24>区间6≥23,25>区间7≥24,26>区间8≥25,以及27>区间9≥26。
120:对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率。
在本发明实施例中,统计当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据的数量,并计算每个输出数据分布区间内的输出数据的数量占当前层的所有输出数据(即M个)的总体数量的比重,从而得到每个输出数据分布区间内的输出数据的比率。
具体地,以卷积层为例,对该卷积层中的10个输出数据进行分析。假设这10个输出数据分别为12.42、1.5、0.75、3.2、0.61、0.9、8.36、1.2、2.6、1.75,且区间1到区间9分布在2-2到27的范围内,则当2-1>区间1≥2-2时,由于区间1内的输出数据的数量为0,因此区间1内的输出数据所占的比率为0%;当20>区间2≥2-1时,由于区间2内共有3个输出数据0.75、0.61和0.9,因此区间2内的输出数据所占的比率为30%;当21>区间3≥20时,由于区间3内共有3个输出数据1.5、1.2和1.75,因此区间3内的输出数据所占的比率为30%;当22>区间4≥21时,由于区间4内共有2个输出数据3.2和2.6,因此区间4内的输出数据所占的比率为20%;当23>区间5≥22时,由于区间5内的输出数据的数量为0,因此区间5内的输出数据所占的比率为0%;当24>区间6≥23时,由于区间6内共有2个输出数据12.42和8.36,因此区间6内的输出数据所占的比率为20%;当25>区间7≥24、26>区间8≥25以及27>区间9≥26时,由于区间7到区间9内的输出数据的数量均为0,因此区间7到区间9内的输出数据所占的比率为0%。
130:基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则。
在本发明实施例中,基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行裁剪(即,比特宽度约束),以剔除掉比率更近似于零或比特宽度超出预设的比特宽度的输出数据,从而得到当前层的M个输出数据分布区间中的N个分布区间,并基于N个分布区间对应的比率所满足的预设规则,得到该N个分布区间的第一起始比特和第一终止比特,从而得到当前层的加速方案。
这里,比特宽度是第一终止比特与第一起始比特之间的距离,该距离可以是任意比特宽度,并且比特宽度越小,数据带宽越小,计算效率越高。但需要注意的是,比特宽度越小,数据裁剪的误差就越大,导致神经网络的最终的准确率变差。因此,可以根据对准确率下降的容忍度来确定采用的比特宽度。例如,在比特宽度为8比特的情况下,最终的准确率会下降1到2个百分点;又如,在比特宽度为9比特的情况下,最终的准确率会下降1个百分点左右;再如,在比特宽度为16比特的情况下,最终的准确率会下降0.5个百分点左右。
需要说明的是,虽然16比特的最终的准确率仅下降了0.5个百分点,而8比特的最终的准确率下降了1到2个百分点,但这1到2个百分点的损失对最终的输出结果影响很小;进一步地,由于16比特的数据量相较于8比特的数据量翻了一倍,因此,导致计算时16比特占用的内存的带宽远大于8比特占用的内存的带宽,由此可见,8比特的性价比是最高的。
进一步地,起始比特可以通过以下两种方法来确定,一种是采用N个分布区间的最大比特;另一种是在N个分布区间确定好之后,判断该N个分布区间是否小于2的n次方,如果是,则起始比特为n-1。终止比特可以通过以下公式确定:终止比特=起始比特-比特宽度+2。
具体地,以8比特为例,由上面的示例可知,区间2的比率为30%,区间3的比率为30%,区间4的比率为20%,以及区间6的比率为20%,因此,从比率不为0的最大区间(即区间6)开始,选取8比特的比特宽度,得到7个比特位3 2 1 0-1-2-3,基于此得到M个输出数据分布区间中的N个分布区间的起始比特为3,终止比特为3-8+2=-3。
需要说明的是,在选取的8比特的比特宽度中,还有一个比特位是符号位,例如,“+”或“-”。
另外,预设规则可以从第一个比率不为0的分布区间开始算起,或者也可以从任意一个比率不为0的分布区间开始算起,或者还可以对任意7比特的分布区间对应的比率求和并选取最大值对应的分布区间。需要说明的是,从第一个比率不为0的分布区间开始算起可以得到本发明的最优分布区间。
140:在神经网络预测过程中,基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明实施例中,在神经网络预测过程中,利用当前层的加速方案(即基于N个分布区间的第一起始比特和第一终止比特),对当前层的M个输出数据进行裁剪(或约束),得到最优的输出数据。
具体地,如果待裁剪的输出数据的值大于起始比特与终止比特之间能表达的最大值,则裁剪后的结果用最大值表示;如果待裁剪的输出数据的值小于起始比特与终止比特之间能表达的最小值,则裁剪后的结果用0表示。这里,用二进制表示的最大值是11111.111,用二进制表示的最小值是00000.001。
举例来说,用如上所述的7个比特位3 2 1 0-1-2-3分别对以二进制形式表示的输出数据(即,二进制数据11111.111111、10000.00和0.0000001)进行裁剪。对于二进制数据11111.111111,因为二进制数据11111.111111>二进制数据1111.111,所以裁剪后的结果用最大值表示,即二进制数据1111.111;对于二进制数据10000.00,因为二进制数据10000.00>二进制数据1111.111,所以裁剪后的结果用最大值表示,即二进制数据1111.111;对于二进制数据0.0000001,因为二进制数据0.0000001<二进制数据00000.001,所以裁剪后的结果为0。
根据本发明实施例提供的技术方案,通过对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率,基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,以及基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测,降低了数据带宽,并因此节省了计算时间,从而提高了计算效率。
另外,由于降低了数据带宽,因此,实现了硬件的加速计算。
在本发明的另一个实施例中,该方法还包括:以2的n次方为界,对当前层的M个权重数据进行划分,得到当前层的M个权重数据分布区间,其中n为整数;对当前层的M个权重数据分布区间中的每个权重数据分布区间内的权重数据进行统计,得到每个权重数据分布区间内的权重数据的数量占M个权重数据的总体数量的比率;基于M个权重数据分布区间对应的比率和预设的比特宽度,对当前层的M个权重数据进行比特宽度约束,得到M个权重数据分布区间中的N个分布区间的第二起始比特和第二终止比特,其中比特宽度为第二终止比特与第二起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第二起始比特和第二终止比特,对当前层的M个权重数据进行比特宽度约束,以实现神经网络芯片的预测。
具体地,本发明还可以获取权重数据的起始比特和终止比特,由于权重数据的起始比特和终止比特的获取方法与如上所述的输出数据的起始比特和终止比特的获取方法类似,故在此将不再进行赘述。
在本发明的另一个实施例中,该方法还包括:以2的n次方为界,对当前层的M个偏置数据进行划分,得到当前层的M个偏置数据分布区间,其中n为整数;对当前层的M个偏置数据分布区间中的每个偏置数据分布区间内的偏置数据进行统计,得到每个偏置数据分布区间内的偏置数据的数量占M个偏置数据的总体数量的比率;基于M个偏置数据分布区间对应的比率和预设的比特宽度,对当前层的M个偏置数据进行比特宽度约束,得到M个偏置数据分布区间中的N个分布区间的第三起始比特和第三终止比特,其中比特宽度为第三终止比特与第三起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第三起始比特和第三终止比特,对当前层的M个偏置数据进行比特宽度约束,以实现神经网络芯片的预测。
具体地,本发明还可以获取偏置数据的起始比特和终止比特,由于偏置数据的起始比特和终止比特的获取方法与如上所述的输出数据的起始比特和终止比特的获取方法类似,故在此将不再进行赘述。
在本发明的另一个实施例中,当前层为卷积层,该方法还包括:在神经网络训练过程中,对神经网络的输入层的M个输入数据进行数据预处理,得到输入层的M个输出数据,将输入层的M个输出数据作为卷积层的M个输入数据;以及对卷积层的M个输入数据进行卷积,得到卷积层的M个输出数据。
具体地,在神经网络训练过程中,可以通过诸如减均值、尺寸变换(例如,简单缩放)、随机剪、镜像变换等方法中的至少一种,对在神经网络的输入层输入的M个原始的输入数据进行数据预处理,得到输入层的M个输出数据,并将输入层的M个输出数据作为卷积层的M个输入数据。
这里,数据预处理的目的在于对原始的输入数据的质量进行改进,从而提高数据挖掘过程的效率、精度和性能;并且数据预处理主要包括数据清理、数据集成、数据变换和数据规约等技术。
需要说明的是,原始的输入数据可以是图像数据、语音数据或其他类型的数据,本发明对此不作限制。
具体地,以图像数据为例,在简单缩放中,通过对图像数据的每一个维度的值进行重新调节(这些维度可能是相互独立的),使得最终的图像数据向量落在[0,1]或[-1,1]的区间内(视图像数据的情况而定)。例如,在处理自然图像时,获得的像素值在[0,255]的区间中,因此,通常的处理方法是将这些像素值除以255,使其缩放到[0,1]的区间中。
接续,对输入层的M个输出数据进行划分,得到输入层的M个输出数据分布区间,对输入层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率,基于M个输出数据分布区间对应的比率和预设的比特宽度,对输入层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的起始比特和终止比特,以及在神经网络预测过程中,基于起始比特和终止比特,对输入层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
再续,利用卷积求和运算,对卷积层的M个输入数据和预设的权重数据进行卷积,得到卷积层的M个输出数据。
需要说明的是,本发明不限于如上所述的卷积层,而是可以是归一化(BatchNormalization)层、Scale层等。
在本发明的另一个实施例中,当前层为激活层,该方法还包括:对激活层的M个输入数据进行激活,得到激活层的M个输出数据。
在本发明的另一个实施例中,当前层为池化层,该方法还包括:对池化层的M个输入数据进行采样,得到池化层的M个输出数据。
具体地,对于当前层为诸如激活层或池化层的非卷积层,本发明同样可以得到该非卷积层的输出数据的起始比特和终止比特,由于非卷积层的输出数据的起始比特和终止比特的获取方法与如上所述的卷积层的输出数据的起始比特和终止比特的获取方法类似,故在此将不再进行赘述。
需要说明的是,本发明不限于如上所述的激活层或池化层,而是可以是修正层(Reduction Layer)、拼合层(Flatten Layer)等。
在本发明的另一个实施例中,当前层为全连接层,该方法还包括:对全连接层的M个输入数据进行分类,得到全连接层的M个输出数据。
具体地,对于全连接层,本发明同样可以得到该全连接层的输出数据的起始比特和终止比特,由于全连接层的输出数据的起始比特和终止比特的获取方法与如上所述的卷积层的输出数据的起始比特和终止比特的获取方法类似,故在此将不再进行赘述。
在本发明的另一个实施例中,预设的比特宽度在1比特到32比特的范围内。可选地,作为另一个实施例,预设的比特宽度优选地为8比特。
具体地,由于神经网络有大量的数据存储在内存中,并且在进行计算时每秒都会有上百个G的数据进出内存,导致计算量非常大,且占用的内存的带宽非常大,因此,为了降低单用的内存的带宽,通常采用8比特的比特宽度。
图2是根据本发明另一示例性实施例示出的一种应用于神经网络芯片的预测方法的流程图。如图2所示,该方法包括:
210:对输入层进行处理,得到输入层的加速方案。
在本发明实施例中,在神经网络训练过程中,可以通过诸如减均值、尺寸变换(例如,简单缩放)、随机剪、镜像变换等方法中的至少一种,对在神经网络的输入层输入的M个原始的输入数据进行数据预处理,得到输入层的M个输出数据,并将输入层的M个输出数据作为卷积层的M个输入数据。
接续,对输入层的M个输出数据进行划分,得到输入层的M个输出数据分布区间,对输入层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率,基于M个输出数据分布区间对应的比率和预设的比特宽度,对输入层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的起始比特和终止比特,以及在神经网络预测过程中,基于起始比特和终止比特,对输入层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
220:对卷积层进行处理,得到卷积层的加速方案。
在本发明实施例中,利用卷积求和运算,对卷积层的M个输入数据和预设的权重数据进行卷积,得到卷积层的M个输出数据,并将卷积层的M个输出数据作为激活层或池化层的M个输入数据。
接续,对卷积层的M个输出数据、M个权重数据和M个偏置数据进行划分,得到卷积层的M个输出数据分布区间、M个权重数据分布区间和M个偏置数据分布区间。
进一步地,分别对卷积层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据、M个权重数据分布区间中的每个权重数据分布区间内的权重数据和M个偏置数据分布区间中的每个偏置数据分布区间内的偏置数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率、每个权重数据分布区间内的权重数据的数量占M个权重数据的总体数量的比率和每个偏置数据分布区间内的偏置数据的数量占M个偏置数据的总体数量的比率。
再续,基于M个输出数据分布区间对应的比率、M个权重数据分布区间对应的比率和M个偏置数据分布区间对应的比率以及预设的比特宽度,对卷积层的M个输出数据、M个权重数据和M个偏置数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特、M个权重数据分布区间中的N个分布区间的第二起始比特和第二终止比特和M个偏置数据分布区间中的N个分布区间的第三起始比特和第三终止比特。
最后,在神经网络预测过程中,基于第一起始比特和第一终止比特、第二起始比特和第二终止比特及第三起始比特和第三终止比特,对卷积层的M个输出数据、M个权重数据和M个偏置数据进行比特宽度约束,以实现神经网络芯片的预测。
230:对激活层或池化层进行处理,得到激活层或池化层的加速方案。
在本发明实施例中,对激活层的M个输入数据进行激活,得到激活层的M个输出数据,或者对池化层的M个输入数据进行采样,得到池化层的M个输出数据。
接续,对激活层或池化层的M个输出数据进行划分,得到激活层或池化层的M个输出数据分布区间。
进一步地,对激活层或池化层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率。
再续,基于M个输出数据分布区间对应的比率和预设的比特宽度,对激活层或池化层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则。
最后,在神经网络预测过程中,基于第一起始比特和第一终止比特,对激活层或池化层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
240:对全连接层进行处理,得到全连接层的加速方案。
在本发明实施例中,由于对全连接层的处理方法与如上所述的对卷积层的处理方法类似,故在此将不再进行赘述。
250:在神经网络预测过程中,基于加速方案,实现神经网络芯片的预测。
在本发明实施例中,基于输入层、卷积层、激活层、池化层和全连接层各自的加速方案,实现了神经网络芯片的预测。
根据本发明实施例提供的技术方案,能够分别得到输入层、卷积层、激活层、池化层和全连接层的加速方案,并利用每一层的加速方案实现神经网络芯片的预测,因此,降低了数据带宽,并进一步提高了计算效率。
另外,由于降低了数据带宽,因此,实现了硬件的加速计算。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
下述为本发明装置实施例,可以用于执行本发明方法实施例。对于本发明装置实施例中未披露的细节,请参照本发明方法实施例。
图3是根据本发明一示例性实施例示出的一种应用于神经网络芯片的预测装置300的框图。如图3所示,该预测装置300包括:
划分模块310,用于在神经网络训练过程中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间;
统计模块320,用于对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率;
约束模块330,用于基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及
预测模块340,用于在神经网络预测过程中,基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
根据本发明实施例提供的技术方案,通过对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率,基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,以及基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测,降低了数据带宽,并因此节省了计算时间,从而提高了计算效率。
在本发明的另一个实施例中,图3的划分模块310还以2的n次方为界,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间,其中n为整数,并且划分模块310还以2的n次方为界,对当前层的M个权重数据进行划分,得到当前层的M个权重数据分布区间,其中n为整数,统计模块320还对当前层的M个权重数据分布区间中的每个权重数据分布区间内的权重数据进行统计,得到每个权重数据分布区间内的权重数据的数量占M个权重数据的总体数量的比率,约束模块330还基于M个权重数据分布区间对应的比率和预设的比特宽度,对当前层的M个权重数据进行比特宽度约束,得到M个权重数据分布区间中的N个分布区间的第二起始比特和第二终止比特,其中比特宽度为第二终止比特与第二起始比特之间的距离,N个分布区间对应的比率满足预设规则,以及预测模块340还在神经网络预测过程中,基于第二起始比特和第二终止比特,对当前层的M个权重数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的另一个实施例中,图3的划分模块310还以2的n次方为界,对当前层的M个偏置数据进行划分,得到当前层的M个偏置数据分布区间,其中n为整数,统计模块320还对当前层的M个偏置数据分布区间中的每个偏置数据分布区间内的偏置数据进行统计,得到每个偏置数据分布区间内的偏置数据的数量占M个偏置数据的总体数量的比率,约束模块330还基于M个偏置数据分布区间对应的比率和预设的比特宽度,对当前层的M个偏置数据进行比特宽度约束,得到M个偏置数据分布区间中的N个分布区间的第三起始比特和第三终止比特,其中比特宽度为第三终止比特与第三起始比特之间的距离,N个分布区间对应的比率满足预设规则,以及预测模块340还在神经网络预测过程中,基于第三起始比特和第三终止比特,对当前层的M个偏置数据进行比特宽度约束,以实现神经网络芯片的预测。
在本发明的另一个实施例中,当前层为卷积层,该预测装置300还包括:预处理模块350,用于在神经网络训练过程中,对神经网络的输入层的M个输入数据进行数据预处理,得到输入层的M个输出数据,将输入层的M个输出数据作为卷积层的M个输入数据;以及卷积模块360,用于对卷积层的M个输入数据进行卷积,得到卷积层的M个输出数据。
在本发明的另一个实施例中,当前层为激活层,该预测装置300还包括:激活模块370,用于对激活层的M个输入数据进行激活,得到激活层的M个输出数据。
在本发明的另一个实施例中,当前层为池化层,该预测装置300还包括:采样模块380,用于对池化层的M个输入数据进行采样,得到池化层的M个输出数据。
在本发明的另一个实施例中,当前层为全连接层,该预测装置300还包括:分类模块390,用于对全连接层的M个输入数据进行分类,得到全连接层的M个输出数据。
在本发明的另一个实施例中,预设的比特宽度在1比特到32比特的范围内。
在本发明的另一个实施例中,预设的比特宽度为8比特。
图4是根据本发明另一示例性实施例示出的一种应用于神经网络芯片的预测装置400的框图。如图4所示,该预测装置400包括:
输入层处理模块410,用于对输入层进行处理,得到输入层的加速方案。
卷积层处理模块420,用于对卷积层进行处理,得到卷积层的加速方案。
激活层处理模块430,用于对激活层进行处理,得到激活层的加速方案。
池化层处理模块440,用于对池化层进行处理,得到池化层的加速方案。
全连接层处理模块450,用于对全连接层进行处理,得到全连接层的加速方案。
预测模块460,用于基于输入层、卷积层、激活层、池化层和全连接层各自的加速方案,实现神经网络芯片的预测。
根据本发明实施例提供的技术方案,能够分别得到输入层、卷积层、激活层、池化层和全连接层的加速方案,并利用每一层的加速方案实现神经网络芯片的预测,因此,降低了数据带宽,并进一步提高了计算效率。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
图5是根据本发明一示例性实施例示出的用于实现神经网络芯片的预测的装置500的框图。
参照图5,装置500包括处理组件510,其进一步包括一个或多个处理器,以及由存储器520所代表的存储器资源,用于存储可由处理组件510的执行的指令,例如应用程序。存储器520中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件510被配置为执行指令,以执行上述对图像进行分类方法。
装置500还可以包括一个电源组件被配置为执行装置500的电源管理,一个有线或无线网络接口被配置为将装置500连接到网络,和一个输入输出(I/O)接口。装置500可以操作基于存储在存储器520的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当存储介质中的指令由上述装置400的处理器执行时,使得上述装置500能够执行一种应用于神经网络芯片的预测方法,包括:在神经网络训练过程中,对当前层的M个输出数据进行划分,得到当前层的M个输出数据分布区间;对当前层的M个输出数据分布区间中的每个输出数据分布区间内的输出数据进行统计,得到每个输出数据分布区间内的输出数据的数量占M个输出数据的总体数量的比率;基于M个输出数据分布区间对应的比率和预设的比特宽度,对当前层的M个输出数据进行比特宽度约束,得到M个输出数据分布区间中的N个分布区间的第一起始比特和第一终止比特,其中比特宽度为第一终止比特与第一起始比特之间的距离,N个分布区间对应的比率满足预设规则;以及在神经网络预测过程中,基于第一起始比特和第一终止比特,对当前层的M个输出数据进行比特宽度约束,以实现神经网络芯片的预测。
本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。