一种深度神经网络运算方法及装置与流程

文档序号:20705306发布日期:2020-05-12 16:20阅读:204来源:国知局
一种深度神经网络运算方法及装置与流程

本申请涉及机器学习技术领域,特别是涉及一种深度神经网络运算方法及装置。



背景技术:

dnn(deepneuralnetwork,深度神经网络)作为机器学习研究中的一个新兴领域,通过模仿人脑的机制来解析数据,是一种通过建立和模拟人脑进行分析学习的智能模型。目前,例如cnn(convolutionalneuralnetwork,卷积神经网络)、rnn(recurrentneuralnetwork,循环神经网络)、lstm(longshorttermmemory,长短期记忆网络)等dnn已在目标检测与分割、行为检测与识别、语音识别等方面得到了很好的应用。随着数据量的不断增加,dnn的计算复杂度不断提高。

为了降低dnn的计算复杂度,目前dnn多采用轻量化神经网络结构,例如移动端卷积神经网络mobilenet和shufflenet等,这些轻量化神经网络结构通过dwconv(depthwiseconvolution,通道分离卷积)实现卷积运算。具体的,对输入特征图每个通道分别进行卷积运算,再利用1×1卷积核对每个通道的卷积结果进行卷积运算,实现通道维度上的信息聚合。dwconv将复杂的卷积运算拆分开来,先对一个通道的特征图进行卷积,再利用1×1卷积核进行通道维度上的信息聚合,降低了每一次进行卷积运算的复杂度。

然而如上述,dwconv运算需要进行多次的卷积运算,多次的卷积运算过程会导致dnn的实际运行效率较低。



技术实现要素:

本申请实施例的目的在于提供一种深度神经网络运算方法及装置,以提高dnn的运行效率。具体技术方案如下:

第一方面,本申请实施例提供了一种深度神经网络运算方法,所述方法包括:

获取网络层输入特征图;

按照预设位移参数,将所述网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,其中,所述预设位移参数包括每个通道在各轴向上的位移量;

利用1×1卷积核,对所述位移特征图进行卷积运算,得到网络层输出特征图。

可选的,所述位移量为预设的多个不同偏移量的平均分布。

可选的,所述预设位移参数经过预先学习得到;

所述预设位移参数的学习方式,包括:

获取初始的位移参数;

将所述位移参数中的位移量转化为浮点位移量;

根据所述网络层输入特征图以及所述浮点位移量,利用双线性插值算法,得到网络层输出函数;

根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,确定所述深度神经网络的网络损失值;

根据所述网络层输出函数,计算所述网络损失值对所述位移参数的梯度,并利用梯度下降法,对位移参数进行多次迭代更新,得到预设位移参数。

可选的,所述根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,确定所述深度神经网络的网络损失值,包括:

根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,计算所述深度神经网络的网络损失函数;

根据所述1×1卷积核,计算第一正则项;

根据所述位移参数,计算第二正则项;

对所述网络损失函数、所述第一正则项及所述第二正则项进行加权,得到所述深度神经网络的网络损失值。

可选的,所述按照预设位移参数,将所述输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,包括:

对所述预设位移参数中的浮点位移量进行四舍五入取整操作,得到整型位移量;

按照所述预设位移参数中的整型位移量,将所述输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图。

第二方面,本申请实施例提供了一种深度神经网络运算装置,所述装置包括:

获取模块,用于获取网络层输入特征图;

位移模块,用于按照预设位移参数,将所述网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,其中,所述预设位移参数包括每个通道在各轴向上的位移量;

运算模块,用于利用1×1卷积核,对所述位移特征图进行卷积运算,得到网络层输出特征图。

可选的,所述位移量为预设的多个不同偏移量的平均分布。

可选的,所述预设位移参数经过预先学习得到;

所述装置还包括:学习模块;

所述学习模块,用于:

获取初始的位移参数;

将所述位移参数中的位移量转化为浮点位移量;

根据所述网络层输入特征图以及所述浮点位移量,利用双线性插值算法,得到网络层输出函数;根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,确定所述深度神经网络的网络损失值;

根据所述网络层输出函数,计算所述网络损失值对所述位移参数的梯度,并利用梯度下降法,对位移参数进行多次迭代更新,得到预设位移参数。

可选的,所述学习模块,具体用于:

根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,计算所述深度神经网络的网络损失函数;

根据所述1×1卷积核,计算第一正则项;

根据所述位移参数,计算第二正则项;

对所述网络损失函数、所述第一正则项及所述第二正则项进行加权,得到所述深度神经网络的网络损失值。

可选的,所述位移模块,具体用于:

对所述预设位移参数中的浮点位移量进行四舍五入取整操作,得到整型位移量;

按照所述预设位移参数中的整型位移量,将所述输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图。

本申请实施例提供的一种深度神经网络运算方法及装置,获取网络层输入特征图,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。通过将网络层输入特征图的每个通道分别沿各轴向进行位移,利用网络层输入特征图的错位,沟通感受野内的信息,这样,使得后续1×1卷积核不但可以进行通道维度上的信息聚合,同时也可以进行空域维度上的信息聚合,整个过程只需要进行一次1×1卷积,有效的提高了dnn的运行效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例的深度神经网络运算方法的流程示意图;

图2为本申请实施例的通道位移示意图;

图3a为本申请一实施例的深度神经网络结构示意图;

图3b为本申请另一实施例的深度神经网络结构示意图;

图4为本申请实施例的深度神经网络运算装置的结构示意图;

图5为本申请实施例的电子设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了提高dnn的运行效率,本申请实施例提供了一种深度神经网络运算方法、装置、电子设备及机器可读存储介质。

下面,首先对本申请实施例所提供的深度神经网络运算方法进行介绍。

本申请实施例所提供的一种深度神经网络运算方法的执行主体可以为执行智能算法的电子设备,该电子设备可以为具有目标检测与分割、行为检测与识别或者语音识别等功能的智能设备,例如远程计算机、远程服务器、智能相机、智能语音设备等等,执行主体中应该至少包括搭载有核心处理芯片的处理器。实现本申请实施例所提供的一种深度神经网络运算方法的方式可以为设置于执行主体中的软件、硬件电路和逻辑电路中的至少一种方式。

如图1所示,本申请实施例所提供的一种深度神经网络运算方法,可以包括如下步骤:

s101,获取网络层输入特征图。

网络层为深度神经网络中的任一运算层,在本实施例中,网络层包括位移层和1×1卷积核,一个位移层对应一个位移结构,即位移层可以为对网络层输入特征图进行位移操作的位移结构,当然,位移层还可以为卷积层、池化层等基本结构与位移结构融合得到的结构。

s102,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图。

其中,预设位移参数包括每个通道在各轴向上的位移量。假设网络层输入特征图的通道数为c,则对网络层输入特征图进行位移的位移层可以是一个有2c参数量的结构,位移参数(dx(c),dy(c))中的位移量分别对应第c通道在x轴和y轴方向上的位移量。以一个通道为例,位移参数为(1,1),即如图2所示,该通道的特征图均向左上角移动一个单位超出边界的部分舍弃,多出来的位置则补零。这种移位操作可以表示为公式(1)所示:

oc,x,y=ic,x+dx(c),y+dy(c)(1)

其中,ic为网络层输入特征图的第c通道,oc为位移后得到的位移特征图的第c通道,(x,y)为位移特征图上的坐标点,(dx(c),dy(c))为第c通道对应的位移参数,(x+dx(c),y+dy(c))为网络层输入特征图上(x,y)位移前对应的坐标点。

每一个通道有各自对应的预设位移参数,按照各自对应的预设位移参数进行位移,最终得到各通道位移后的位移特征图。预设位移参数可以是固定的,例如对预设的多个不同偏移量求平均分布得到,预设位移参数也可以是学习得到的。

可选的,位移量可以为预设的多个不同偏移量的平均分布。

预设位移参数中的位移量,可以是对预设的多个不同偏移量求平均分布得到,预设的多个不同偏移量可以是预先基于历史经验设置的,偏移量的数目设置的越多,平均分布所得到的预设位移参数能够保证更好的网络精度。当然,预设位移参数除了求平均分布得到以外,还可以是通过求高斯分布得到。

可选的,预设位移参数还可以经过预先学习得到。

预设位移参数的学习方式,具体可以包括:

第一步,获取初始的位移参数。

初始的位移参数可以包括多种,例如,初始的位移参数可以为(0,0),初始的位移参数中的位移量还可以为多种不同偏移量的平均分布,初始的位移参数还可以是用户根据经验设置等。

第二步,将位移参数中的位移量转化为浮点位移量。

初始的位移参数通常情况下为离散型的整数变量,为了使得位移参数可学习,本实施例将位移参数中的位移量松弛为浮点位移量。

第三步,根据网络层输入特征图以及浮点位移量,利用双线性插值算法,得到网络层输出函数。

为了使位移参数可学习,在将位移参数中的位移量松弛为浮点位移量的同时,还将本实施例中的位移操作松弛为可微分的双线性插值采样,这样,公式(1)可以转化为:

oc,x,y=∑(n,m)∈ωic,n,m(1-|x+dx(c)-n|)(1-|y+dy(c)-m|)(2)

其中,ic为网络层输入特征图的第c通道,oc为位移后得到的位移特征图的第c通道,(x,y)为位移特征图上的坐标点,ω为网络层输入特征图上的浮点坐标(x+dx(c),y+dy(c))所处位置的邻域,(n,m)为邻域的四个边界点的坐标,(dx(c),dy(c))为第c通道对应的位移参数。公式(2)给出了双线性插值的原理,即利用原图像中目标点四周的四个真实存在的坐标点来共同决定目标图中的一个坐标点。

第四步,根据深度神经网络的输入数据、1×1卷积核、位移参数以及输入数据对应的标签,确定深度神经网络的网络损失值。

整个深度神经网络可以看成一个非线性映射函数,是由多个位移层、卷积层、激活层、池化层和/或一些其他自定义的网络层,层层堆叠得到的一个非线性函数,用于学习深度神经网络的输入数据与其对应的标签之间的非线性映射关系。

网络损失值与任务相关,不同任务有不同的损失函数,例如分类的损失函数可以是softmax。网络损失值是整个深度神经网络的输出值或输出图像,与输入数据对应的标签(例如类别、分割结果、检测结果等)符合的某种逼近关系。图片检测、分割都有各自的损失函数,这里不再一一列举。

可选的,根据深度神经网络的输入数据、1×1卷积核、位移参数以及输入数据对应的标签,确定深度神经网络的网络损失值,具体可以为:

根据深度神经网络的输入数据、1×1卷积核、位移参数以及输入数据对应的标签,计算深度神经网络的网络损失函数;

根据1×1卷积核,计算第一正则项;

根据位移参数,计算第二正则项;

对网络损失函数、第一正则项及第二正则项进行加权,得到深度神经网络的网络损失值。

为了使得尽量多的输入特征图无需位移,即(dx,dy)=(0,0),进一步减少位移带来的损耗,本实施例对位移参数加上正则项约束,网络损失值如公式(3)所示。

其中,loss为深度神经网络的网络损失值,l(.)为网络损失函数,f(.)为深度神经网络所代表的非线性映射函数,w为1x1卷积层权重参数,input为深度神经网络的输入数据,(dx,dy)为位移参数,p为卷积层层数,q为位移层层数,t为深度神经网络的输入数据对应的标签,λ1、λ2为加权系数,为第一正则项,为第二正则项,本实施例中的正则项可以为l1正则或者l2正则。

第五步,根据网络层输出函数,计算网络损失值对位移参数的梯度,并利用梯度下降法,对位移参数进行多次迭代更新,得到预设位移参数。

网络损失值可以为上述加入了正则项约束或者未加正则项约束的网络损失值,计算网络损失值对网络层输出函数的梯度,具体可以为通过链式法则,按照从最后一个网络层起依次向前,计算网络损失值对输出函数的梯度,梯度反映了位移参数的调整方向和大小,则利用梯度下降法,基于网络损失值对输出函数的梯度,对位移参数进行多次迭代更新,可以得到预设位移参数。具体的,计算网络损失值对输出函数的梯度即为网络损失值对输出函数反向求偏导的过程,如公式(4)所示:

其中sign(.)为符号函数,当输入数据为正数时输出1,当输入数据为负数时输出-1;height和width为位移特征图的高与宽。公式(4)根据网络损失值对位移特征图的梯度求得网络损失值对位移参数的梯度,用于更新该位移参数。

在进行反向求偏导计算梯度时,更新的参数为浮点型的位移参数,也就是说,反向求偏导的位移变化量太小时,不会对网络的前向推导产生影响,只有更新的位移变化量经由多次迭代累积突破质的变化时才会对网络前向推导产生影响,当网络训了完毕后,仅保留四舍五入取整后的位移参数。

可选的,s102具体可以为:

对预设位移参数中的浮点位移量进行四舍五入取整操作,得到整型位移量;

按照预设位移参数中的整型位移量,将输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图。

在前向推导或者训练完毕时,每一次的位移操作必须是按照整型位移量进行位移,因此,需要将预设位移参数中的浮点位移量进行四舍五入取整操作,在基于整型位移量进行位移,得到位移特征图。

s103,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。

在得到位移特征图后,利用1×1卷积核,对位移特征图进行卷积运算,由于位移特征图能够起到沟通感受野内的信息交流的作用,因此,1×1卷积核不但可以进行通道维度上的信息聚合,同时也可进行空域维度上的信息聚合。

如图3a及图3b所示,为本实施例深度神经网络的网络结构,图3a为步幅为2的网络结构,图3b为步幅为1的网络结构,两个网络结构不含卷积核大于1的卷积层,图3a及图3b的右侧分支为通道注意力机制,用于关注通道中的一部分有用信息,不属于本实施例的重点,这里不再详述。除了如图3a和图3b所示的网络结构以外,深度神经网络的网络结构还可以有其他变形体,这里不再一一举例。

应用本实施例,获取网络层输入特征图,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。通过将网络层输入特征图的每个通道分别沿各轴向进行位移,利用网络层输入特征图的错位,沟通感受野内的信息,这样,使得后续1×1卷积核不但可以进行通道维度上的信息聚合,同时也可以进行空域维度上的信息聚合,整个过程只需要进行一次1×1卷积,有效的提高了dnn的运行效率。通过位移结构与1×1卷积核组合可以搭建轻量化网络结构,满足轻量化网络的精度,同时避免了dwconv的使用,本实施例所提供的网络结构无论在gpu(graphicsprocessingunit,图形处理器)平台还是其他硬件平台上均可高效的运行,具有重要的工业工程价值。

相应于上述方法实施例,本申请实施例提供了一种深度神经网络运算装置,如图4所示,该深度神经网络运算装置可以包括:

获取模块410,用于获取网络层输入特征图;

位移模块420,用于按照预设位移参数,将所述网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,其中,所述预设位移参数包括每个通道在各轴向上的位移量;

运算模块430,用于利用1×1卷积核,对所述位移特征图进行卷积运算,得到网络层输出特征图。

可选的,所述位移量可以为预设的多个不同偏移量的平均分布。

可选的,所述预设位移参数可以经过预先学习得到;

所述装置还可以包括:学习模块;

所述学习模块,可以用于:获取初始的位移参数;将所述位移参数中的位移量转化为浮点位移量;根据所述网络层输入特征图以及所述浮点位移量,利用双线性插值算法,得到网络层输出函数;根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,确定所述深度神经网络的网络损失值;根据所述网络层输出函数,计算所述网络损失值对所述位移参数的梯度,并利用梯度下降法,对位移参数进行多次迭代更新,得到预设位移参数。

可选的,所述学习模块,具体可以用于:

根据所述深度神经网络的输入数据、所述1×1卷积核、所述位移参数以及所述输入数据对应的标签,计算所述深度神经网络的网络损失函数;

根据所述1×1卷积核,计算第一正则项;

根据所述位移参数,计算第二正则项;

对所述网络损失函数、所述第一正则项及所述第二正则项进行加权,得到所述深度神经网络的网络损失值。

可选的,所述位移模块420,具体可以用于:

对所述预设位移参数中的浮点位移量进行四舍五入取整操作,得到整型位移量;

按照所述预设位移参数中的整型位移量,将所述输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图。

应用本实施例,获取网络层输入特征图,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。通过将网络层输入特征图的每个通道分别沿各轴向进行位移,利用网络层输入特征图的错位,沟通感受野内的信息,这样,使得后续1×1卷积核不但可以进行通道维度上的信息聚合,同时也可以进行空域维度上的信息聚合,整个过程只需要进行一次1×1卷积,有效的提高了dnn的运行效率。

为了提高dnn的运行效率,本申请实施例还提供了一种电子设备,如图5所示,包括处理器501和机器可读存储介质502,其中,

机器可读存储介质502,用于存储能够被处理器501执行的机器可执行指令;

处理器501,用于被机器可读存储介质502上所存放的机器可执行指令促使执行本申请实施例提供的深度神经网络运算方法的所有步骤。

机器可读存储介质502与处理器501之间可以通过有线连接或者无线连接的方式进行数据传输,并且电子设备可以通过有线通信接口或者无线通信接口与其他的设备进行通信。

上述机器可读存储介质可以包括ram(randomaccessmemory,随机存取存储器),也可以包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。可选的,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述处理器可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessor,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本实施例中,该电子设备的处理器通过读取机器可读存储介质中存储的机器可执行指令,并通过运行该机器可执行指令,能够实现:获取网络层输入特征图,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。通过将网络层输入特征图的每个通道分别沿各轴向进行位移,利用网络层输入特征图的错位,沟通感受野内的信息,这样,使得后续1×1卷积核不但可以进行通道维度上的信息聚合,同时也可以进行空域维度上的信息聚合,整个过程只需要进行一次1×1卷积,有效的提高了dnn的运行效率。

另外,相应于上述实施例所提供的深度神经网络运算方法,本申请实施例提供了一种机器可读存储介质,用于机器可执行指令,所述机器可执行指令促使处理器执行本申请实施例提供的深度神经网络运算方法的所有步骤。

本实施例中,机器可读存储介质存储有在运行时执行本申请实施例所提供的深度神经网络运算方法的机器可执行指令,因此能够实现:获取网络层输入特征图,按照预设位移参数,将网络层输入特征图的每个通道分别沿各轴向进行位移,得到位移特征图,利用1×1卷积核,对位移特征图进行卷积运算,得到网络层输出特征图。通过将网络层输入特征图的每个通道分别沿各轴向进行位移,利用网络层输入特征图的错位,沟通感受野内的信息,这样,使得后续1×1卷积核不但可以进行通道维度上的信息聚合,同时也可以进行空域维度上的信息聚合,整个过程只需要进行一次1×1卷积,有效的提高了dnn的运行效率。

对于电子设备以及机器可读存储介质实施例而言,由于其所涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及机器可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1