归一化处理方法、装置和计算机设备与流程

文档序号:28263167发布日期:2021-12-31 17:12阅读:333来源:国知局
归一化处理方法、装置和计算机设备与流程

1.本技术涉及人工智能领域,并且更具体地,涉及一种归一化处理方法、装置和计算机设备。


背景技术:

2.人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
3.随着对卷积神经网络的深入研究,其执行效率或执行时间成为研究的热点。相关的技术方案中,对降低卷积层的执行时间研究较多,而对于降低卷积神经网络中的非卷积层(例如,批归一化(batch normalize,bn)层)的研究较少。
4.因此,如何降低卷积神经网络中的非卷积层(例如,bn层)的执行时间,提高非卷积层的执行效率成为当前亟需要解决的问题。


技术实现要素:

5.本技术实施例提供了一种归一化处理方法、装置以及计算机设备,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
6.第一方面,提供了一种归一化处理方法,包括:批归一化bn层获取卷积神经网络中的多个数据样本,所述多个数据样本为所述卷积神经网络中卷积层的输出结果;所述bn层在正向传播的计算过程中,根据所述多个数据样本并行计算所述多个数据样本对应的均值以及方差;所述bn层根据所述多个数据样本对应的均值以及方差,对所述多个数据样本进行处理以得到所述bn层的处理结果。
7.应理解,对上述归一化处理方法可以应用在神经网络的训练阶段,或者也可以应用在神经网络的推理阶段,本技术对此不做具体限定。
8.上述技术方案中,通过公式转换,解决bn层在计算过程中的数据依赖问题,使得数据可以同时并行计算。这样,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
9.在一种可能的实现方式中,所述方法还包括:所述bn层确定所述卷积神经网络的损失,所述损失是根据目标值和所述卷积神经网络的预测值确定的,所述预测值是根据所述bn层的处理结果确定的;所述bn层在反向传播的计算过程中,并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
10.在另一种可能的实现方式中,根据所述均值、所述方差、缩放参数以及平移参数对
所述多个数据样本进行处理,得到所述bn层的处理结果;所述bn层在反向传播的计算过程中,根据所述损失分别计算所述缩放参数的偏导和所述平移参数的偏导;所述bn层根据所述缩放参数的偏导和所述平移参数的偏导分别并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
11.在另一种可能的实现方式中,所述多个数据样本存储在本地缓存中,所述bn层从所述本地缓存中获取所述多个数据样本。
12.在另一种可能的实现方式中,所述方法还包括:所述bn层将所述bn层的处理结果存储在本地缓存中,以便于所述bn层的下一层从所述本地缓存中获取所述bn层的处理结果。
13.在另一种可能的实现方式中,所述bn层的下一层为池化层和卷积层。
14.在另一种可能的实现方式中,所述bn层根据如下公式并行计算所述多个数据样本对应的均值和方差,
[0015][0016][0017]
其中,m表示所述多个数据样本的数量,i表示所述m个中的第i个,x
i
表示所述多个数据样本中的第i个数据样本,μ
b
表示所述多个数据样本对应的均值,表示所述多个数据样本对应的方差。
[0018]
在另一种可能的实现方式中,所述bn层根据如下公式并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导,
[0019][0020][0021]
其中,e表示所述损失,m表示所述多个数据样本的数量,i表示所述m个中的第i个,表示第i个数据样本归一化后的样本点,表示所述损失对所述均值的偏导,β表示所述平移参数,表示所述平移参数的偏导,α表示所述缩放参数,表示所述缩放参数的偏导,ε表示归一化参数,表示所述损失对所述方差的偏导。
[0022]
第二方面,提供了一种归一化处理装置,包括:
[0023]
获取模块,用于批归一化bn层获取卷积神经网络中的多个数据样本,所述多个数据样本为所述卷积神经网络中卷积层的输出结果;
[0024]
计算模块,用于所述bn层在正向传播的计算过程中,根据所述多个数据样本并行计算所述多个数据样本对应的均值以及方差;
[0025]
处理模块,用于所述bn层根据所述多个数据样本对应的均值以及方差,对所述多个数据样本进行处理以得到所述bn层的处理结果。
[0026]
上述获取模块、计算模块和处理模块的进一步实现功能可以参考第一方面或者第一方面的任意一种实现方式,此处不再赘述。
[0027]
第三方面,提供了一种归一化处理方法,包括:神经网络中的第一层对待处理的数据进行处理,得到第一处理结果;所述第一层将所述第一处理结果存储在本地缓存中;所述神经网络中的第二层从所述本地缓存中获取所述第一处理结果;所述第二层对所述第一处理结果进行处理,得到第二处理结果,所述第二层为所述第一层的下一层。
[0028]
上述技术方案中,一个层的输入数据直接从本地缓存(local buffer)中获取,从而降低神经网络的执行时间,提高神经网络的执行效率,避免神经网络多次访问外存所造成的较长的执行时间。
[0029]
在一种可能的实现方式中,所述第一层为第一卷积层,所述第二层为批归一化bn层。
[0030]
在另一种可能的实现方式中,所述神经网络中的第一层对待处理的数据进行处理,得到第一处理结果,包括:所述第一卷积层对待处理的数据进行特征提取,得到多个数据样本;
[0031]
所述第一层将所述第一处理结果存储在本地缓存中,包括:所述第一卷积层将所述多个数据样本存储在本地缓存中;
[0032]
所述神经网络中的第二层从所述本地缓存中获取所述第一处理结果,包括:所述bn层从所述本地缓存中获取所述多个数据样本;
[0033]
所述第二层对所述第一处理结果进行处理,得到第二处理结果,包括:所述bn层对所述多个数据样本进行处理,得到所述bn层的处理结果。
[0034]
在另一种可能的实现方式中,在所述第一层将所述第一处理结果存储在本地缓存之前,所述方法还包括:重新划分指令映射,使得所述神经网络中的第一层和所述第二层融合为一层。
[0035]
上述技术方案中,可以通过重新划分的指令映射,将神经网络中的至少两个层融合为一个层,实现卷积神经网络中层与层中间的融合,使得层与层之间是通过本地缓存(localbuffer)进行数据传输,从而降低神经网络的执行时间,提高神经网络的执行效率,避免神经网络多次访问外存所造成的较长的执行时间。
[0036]
在另一种可能的实现方式中,所述方法还包括:所述第二层将所述第二处理结果存储在本地缓存中,以便于所述bn层的下一层从所述本地缓存中获取所述第二处理结果。
[0037]
上述技术方案中,可以将一个层的输出数据直接存储至本地缓存(local buffer),下一层的输入数据直接从本地缓存(local buffer)中获取。这样,可以降低神经网络的执行时间,提高神经网络的执行效率,避免神经网络多次访问外存所造成的较长的执行时间。
[0038]
在另一种可能的实现方式中,所述bn层对所述多个数据样本进行处理,得到所述bn层的处理结果,包括:
[0039]
所述bn层在正向传播的计算过程中,根据所述多个数据样本并行计算所述多个数据样本对应的均值以及方差;所述bn层根据所述多个数据样本对应的均值以及方差,对所
述多个数据样本进行处理,得到所述bn层的处理结果。
[0040]
上述技术方案中,通过公式转换,解决bn层在计算过程中的数据依赖问题,使得数据可以同时并行计算。这样,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
[0041]
在另一种可能的实现方式中,所述方法还包括:所述bn层确定所述卷积神经网络的损失,所述损失是根据目标值和所述卷积神经网络的预测值确定的,所述预测值是根据所述bn层的处理结果确定的;所述bn层在反向传播的计算过程中,并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
[0042]
在另一种可能的实现方式中,所述bn层根据所述多个数据样本对应的均值以及方差,对所述多个数据样本进行处理,得到所述bn层的处理结果,包括:所述bn层根据所述均值、所述方差、缩放参数以及平移参数对所述多个数据样本进行处理,得到所述bn层的处理结果;所述bn层在反向传播的计算过程中,根据所述损失分别计算所述缩放参数的偏导和所述平移参数的偏导;所述bn层根据所述缩放参数的偏导和所述平移参数的偏导,并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
[0043]
在另一种可能的实现方式中,所述bn层的下一层为池化层和卷积层。
[0044]
在另一种可能的实现方式中,所述bn层根据如下公式并行计算所述多个数据样本对应的均值和方差,
[0045][0046][0047]
其中,m表示所述多个数据样本的数量,i表示所述m个中的第i个,x
i
表示所述多个数据样本中的第i个数据样本,μ
b
表示所述多个数据样本对应的均值,表示所述多个数据样本对应的方差。
[0048]
在另一种可能的实现方式中,所述bn层根据如下公式并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导,
[0049][0050][0051]
其中,e表示所述损失,m表示所述多个数据样本的数量,i表示所述m个中的第i个,表示第i个数据样本归一化后的样本点,表示所述损失对所述均值的偏导,β表示所述平移参数,表示所述平移参数的偏导,α表示所述缩放参数,表示所述缩放参数的偏导,ε表示归一化参数,表示所述损失对所述方差的偏导。
[0052]
第四方面,提供了一种归一化处理装置,包括:处理模块、存储模块、获取模块。
[0053]
处理模块用于:神经网络中的第一层对待处理的数据进行处理,得到第一处理结果;
[0054]
存储模块用于:所述第一层将所述第一处理结果存储在本地缓存中;
[0055]
获取模块用于:所述神经网络中的第二层从所述本地缓存中获取所述第一处理结果;
[0056]
所述处理模块还用于:所述第二层对所述第一处理结果进行处理,得到第二处理结果,所述第二层为所述第一层的下一层。
[0057]
上述处理模块、存储模块和获取模块的进一步实现功能可以参考第三方面或者第三方面的任意一种实现方式,此处不再赘述。
[0058]
第五方面,提供了一种归一化处理方法,包括:
[0059]
神经网络加速器中向量计算单元从本地缓存中获取卷积神经网络中的多个数据样本,所述多个数据样本为所述神经网络中卷积层的输出结果,所述神经网络加速器包括所述本地缓存;
[0060]
所述向量计算单元在所述卷积神经网络正向传播的计算过程中,根据所述多个数据样本并行计算所述多个数据样本对应的均值以及方差;
[0061]
所述向量计算单元根据所述多个数据样本对应的均值以及方差,对所述多个数据样本进行处理以得到归一化层的处理结果。
[0062]
在一种可能的实现方式中,所述向量计算单元确定所述卷积神经网络的损失,所述损失是根据目标值和所述卷积神经网络的预测值确定的,所述预测值是根据所述bn层的处理结果确定的;所述向量计算单元在反向传播的计算过程中,并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
[0063]
在另一种可能的实现方式中,所述向量计算单元根据所述均值、所述方差、缩放参数以及平移参数对所述多个数据样本进行处理,得到所述bn层的处理结果;所述向量计算单元在反向传播的计算过程中,根据所述损失分别计算所述缩放参数的偏导和所述平移参数的偏导;所述向量计算单元根据所述缩放参数的偏导和所述平移参数的偏导分别并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
[0064]
在另一种可能的实现方式中,所述向量计算单元将所述bn层的处理结果存储在本地缓存中,以便于所述bn层的下一层从所述本地缓存中获取所述bn层的处理结果。
[0065]
在另一种可能的实现方式中,所述bn层的下一层为池化层和卷积层。
[0066]
在另一种可能的实现方式中,所述向量计算单元根据如下公式并行计算所述多个数据样本对应的均值和方差,
[0067][0068][0069]
其中,m表示所述多个数据样本的数量,i表示所述m个中的第i个,x
i
表示所述多个数据样本中的第i个数据样本,μ
b
表示所述多个数据样本对应的均值,表示所述多个数据样本对应的方差。
[0070]
在另一种可能的实现方式中,所述向量计算单元根据如下公式并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导,
[0071][0072][0073]
其中,e表示所述损失,m表示所述多个数据样本的数量,i表示所述m个中的第i个,表示第i个数据样本归一化后的样本点,表示所述损失对所述均值的偏导,β表示所述平移参数,表示所述平移参数的偏导,α表示所述缩放参数,表示所述缩放参数的偏导,ε表示归一化参数,表示所述损失对所述方差的偏导。
[0074]
第六方面,提供了一种计算机设备,包括:至少一个处理器和存储器,其中该存储器用于存储计算机程序,该至少一个处理器用于从存储器中调用并运行该计算机程序,使得执行上述第一方面或第一方面任意一种可能的实现方式提供的方法。
[0075]
可选地,在具体实现中,该处理器的个数不做限制。该处理器是通用处理器,可选地,该通用处理器能够通过硬件来实现或通过软件来实现。当通过硬件实现时,该处理器是逻辑电路、集成电路等;当通过软件来实现时,该处理器是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器集成在处理器中,位于该处理器之外,独立存在。
[0076]
第七方面,提供了一种计算机设备,包括:至少一个处理器和存储器,其中该存储器用于存储计算机程序,该至少一个处理器用于从存储器中调用并运行该计算机程序,使得执行上述第三方面或第三方面任意一种可能的实现方式提供的方法。
[0077]
可选地,在具体实现中,该处理器的个数不做限制。该处理器是通用处理器,可选地,该通用处理器能够通过硬件来实现或通过软件来实现。当通过硬件实现时,该处理器是逻辑电路、集成电路等;当通过软件来实现时,该处理器是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器集成在处理器中,位于该处理器之外,独立存在。
[0078]
第八方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能的实现方式中的方法。
[0079]
第九方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第三方面或第三方面任意一种可能的实现方式中的方法。
[0080]
第十方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第一方面或第一方面任意一种可能的实现方式中的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,rom)、可编程rom(programmable rom,prom)、可擦除的prom(erasable prom,eprom)、flash存储器、电eprom(electrically eprom,
eeprom)以及硬盘驱动器(hard drive)。
[0081]
第十一方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述第三方面或第三方面任意一种可能的实现方式中的方法。这些计算机可读存储包括但不限于如下的一个或者多个:只读存储器(read-only memory,rom)、可编程rom(programmable rom,prom)、可擦除的prom(erasable prom,eprom)、flash存储器、电eprom(electrically eprom,eeprom)以及硬盘驱动器(hard drive)。
[0082]
第十二方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过所述数据接口读取存储器上存储的指令,以执行第一方面或第一方面任意一种可能的实现方式中的方法。
[0083]
第十三方面,提供一种芯片,该芯片包括处理器与数据接口,其中,处理器通过所述数据接口读取存储器上存储的指令,以执行第三方面或第三方面任意一种可能的实现方式中的方法。
[0084]
在具体实现过程中,该芯片可以以中央处理器(central processing unit,cpu)、微控制器(micro controller unit,mcu)、微处理器(micro processing unit,mpu)、数字信号处理器(digital signal processing,dsp)、片上系统(system on chip,soc)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或可编辑逻辑器件(programmable logic device,pld)的形式实现。
[0085]
可选地,在具体实现中,该处理器的个数不做限制。该处理器是通用处理器,可选地,该通用处理器能够通过硬件来实现或通过软件来实现。当通过硬件实现时,该处理器是逻辑电路、集成电路等;当通过软件来实现时,该处理器是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器集成在处理器中,位于该处理器之外,独立存在。
附图说明
[0086]
图1为本技术实施例提供的一种人工智能主体框架示意图。
[0087]
图2为本技术实施例提供的一种可能的系统架构200。
[0088]
图3为本技术实施例提供的另一种可能的云场景下的系统架构700。
[0089]
图4为本技术实施例提供的一种卷积神经网络300的示意性框图。
[0090]
图5为本技术实施例提供的一种卷积神经网络400的示意性框图。
[0091]
图6为本技术实施例提供的一种卷积神经网络500的示意性框图。
[0092]
图7a为本技术实施例提供的一种芯片的硬件结构示意图。
[0093]
图7b为本技术实施例提供的一种向量计算单元407的示意图。
[0094]
图8是本技术实施例提供的一种归一化处理方法的示意性流程图。
[0095]
图9是本技术实施例提供的一种可能的层间融合的示意图。
[0096]
图10是本技术实施例提供的一种归一化处理装置1000的示意性框图。
[0097]
图11是本技术实施例提供的一种归一化处理装置1200的硬件结构示意图。
具体实施方式
[0098]
下面将结合附图,对本技术实施例中的技术方案进行描述。
[0099]
本技术将围绕包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
[0100]
另外,在本技术实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
[0101]
本技术实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
[0102]
本技术实施例描述的网络架构以及业务场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0103]
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0104]
本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
[0105]
人工智能(artificial intelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,ai基础理论等。
[0106]
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能系统总体工作流程,适用于通用的人工智能领域需求。
[0107]
下面从“智能信息链”(水平轴)和“it价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
[0108]“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息
感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
[0109]“it价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
[0110]
(1)基础设施
[0111]
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(cpu、npu、gpu、asic、fpga等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
[0112]
(2)数据
[0113]
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
[0114]
(3)数据处理
[0115]
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
[0116]
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
[0117]
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
[0118]
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
[0119]
(4)通用能力
[0120]
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
[0121]
(5)智能产品及行业应用
[0122]
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,平安城市,智能终端等。
[0123]
由于本技术实施例涉及大量神经网络的应用,为了便于理解,下面先对本技术实施例可能涉及的神经网络的相关术语和概念进行介绍。
[0124]
(1)神经网络
[0125]
神经网络可以是由神经单元组成的,神经单元可以是指以x
s
和截距1为输入的运算单元,该运算单元的输出可以为:
[0126][0127]
其中,s=1、2、
……
n,n为大于1的自然数,w
s
为x
s
的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将
神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
[0128]
(2)深度神经网络
[0129]
深度神经网络(deep neural network,dnn),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
[0130]
应理解,在机器学习和认知科学领域,dnn是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。
[0131]
虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例:假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
[0132]
综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为
[0133]
需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。
[0134]
(3)卷积神经网络
[0135]
卷积神经网络(convolutional neuron network,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
[0136]
(4)损失函数
[0137]
在训练深度神经网络的过程中,因为希望深度神经网络的预测值尽可能的接近目标值,所以可以通过比较当前网络的预测值和目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
[0138]
(5)反向传播算法
[0139]
神经网络可以采用误差反向传播(back propagation,bp)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建损失越来越小。具体地,前向传递输入信号直至输出会产生损失,通过反向传播损失信息来更新初始的神经网络模型中参数,从而使损失收敛。反向传播算法是以损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
[0140]
图2示出了本技术实施例提供的一种可能的系统架构200。
[0141]
在图2中,数据采集设备260用于采集训练数据。针对本技术实施例的归一化处理方法来说,即数据采集设备260采集的训练数据可以是样本数据,或者也可以是样本图像,本技术不做具体限定。
[0142]
在采集到训练数据之后,数据采集设备260将这些训练数据存入数据库230,训练设备220基于数据库230中维护的训练数据训练得到目标模型/规则201。
[0143]
上述目标模型/规则201能够用于实现各种目的,例如,图像分类等。本技术实施例中的目标模型/规则201具体可以为卷积神经网络。
[0144]
需要说明的是,在实际的应用中,所述数据库230中维护的训练数据不一定都来自于数据采集设备260的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备220也不一定完全基于数据库230维护的训练数据进行目标模型/规则201的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本技术实施例的限定。
[0145]
根据训练设备220训练得到的目标模型/规则201可以应用于不同的系统或设备中,如应用于图2所示的执行设备210,所述执行设备210可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr),车载终端等,还可以是服务器,或者,云端等。在图2中,执行设备210配置输入/输出(input/output,i/o)接口212,用于与外部设备进行数据交互,用户可以通过客户设备240向i/o接口212输入数据,所述输入数据在本技术实施例中可以包括:客户设备输入的样本数据。
[0146]
预处理模块213和预处理模块214用于根据i/o接口212接收到的输入数据(如样本数据)进行预处理,在本技术实施例中,也可以没有预处理模块213和预处理模块214(也可以只有其中的一个预处理模块),而直接采用计算模块211对输入数据进行处理。
[0147]
在执行设备210对输入数据进行预处理,或者在执行设备210的计算模块211执行计算等相关的处理过程中,执行设备210可以调用数据存储系统250中的数据、代码等以用
于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统250中。
[0148]
最后,i/o接口212将处理结果返回给客户设备240,从而提供给用户。
[0149]
值得说明的是,训练设备220可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则201,从而为用户提供所需的结果。
[0150]
在图2中所示情况下,在一种情况下,用户可以手动给定输入数据,该手动给定可以通过i/o接口212提供的界面进行操作。
[0151]
另一种情况下,客户设备240可以自动地向i/o接口212发送输入数据,如果要求客户设备240自动发送输入数据需要获得用户的授权,则用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端,采集如图所示输入i/o接口212的输入数据及输出i/o接口212的输出结果作为新的样本数据,并存入数据库230。当然,也可以不经过客户设备240进行采集,而是由i/o接口212直接将如图所示输入i/o接口212的输入数据及输出i/o接口212的输出结果,作为新的样本数据存入数据库230。
[0152]
值得注意的是,图2仅是本技术实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统250相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统250置于执行设备210中。
[0153]
如图2所示,根据训练设备220训练得到目标模型/规则201,该目标模型/规则201在本技术实施例中可以是卷积神经网络(convolutional neuron network,cnn),或者,可以是深度卷积神经网络(deep convolutional neural networks,dcnn)等,本技术对此不做具体限定。
[0154]
图3示出了本技术实施例提供的另一种可能的云场景下的系统架构700。
[0155]
该系统架构700包括本地设备520、本地设备530以及执行设备510和数据存储系统550,其中,本地设备520和本地设备530通过通信网络与执行设备510连接。
[0156]
执行设备510可以由一个或多个服务器实现。可选的,执行设备510可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备510可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备510可以使用数据存储系统550中的数据,或者调用数据存储系统550中的程序代码来实现本技术实施例的归一化处理方法。
[0157]
需要说明的是,上述执行设备510也可以称为云端设备,此时执行设备510可以部署在云端。
[0158]
用户可以操作各自的用户设备(例如,本地设备520和本地设备530)与执行设备510进行交互。每个本地设备可以表示任何计算设备,例如,个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
[0159]
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备510进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。
[0160]
在一种实现方式中,本地设备520、本地设备530可以从执行设备510获取到目标神经网络的相关参数,将目标神经网络部署在本地设备520、本地设备530上,利用该目标神经网络进行数据处理等。
[0161]
在另一种实现中,执行设备510上可以直接部署目标神经网络,执行设备510通过
从本地设备520和本地设备530获取待处理图像,并根据目标神经网络对待处理图像进行数据处理等。
[0162]
下面结合图4-图6重点对卷积神经网络的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deeplearning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,卷积神经网络是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像做出响应。
[0163]
本技术实施例中一种可能的神经网络的结构可以如图4所示。在图4中,卷积神经网络300可以包括输入层310,卷积层/池化层320(其中,池化层为可选的),以及神经网络层330。其中,输入层310可以获取待处理图像,并将获取到的待处理图像交由卷积层/池化层320以及后面的神经网络层330进行处理,可以得到图像的处理结果。下面对图4中的cnn 300中内部的层结构进行详细的介绍。
[0164]
卷积层/池化层320:
[0165]
如图4所示卷积层/池化层320可以包括如示例321-326层,举例来说:在一种实现中,321层为卷积层,322层为池化层,323层为卷积层,324层为池化层,325为卷积层,326为池化层;在另一种实现方式中,321、322为卷积层,323为池化层,324、325为卷积层,326为池化层,即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
[0166]
下面将以卷积层321为例,介绍一层卷积层的内部工作原理。
[0167]
卷积层321是指在卷积神经网络中,对输入的图片进行卷积处理,从而提取图片特征的一个过程。应理解,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层321可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素等,这取决于步长(stride)的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行
×
列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。
[0168]
不同的权重矩阵可以用来提取图像中不同的特征,例如,一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行
×
列)相同,经过该多个尺寸相同的权重矩阵提取后的卷积特征图的尺寸也相同,再将提取到的多个尺寸相同的卷积特征图合并形成卷积运算的输出。
[0169]
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络
300进行正确的预测。
[0170]
当卷积神经网络300有多个卷积层的时候,初始的卷积层(例如321)往往提取较多的一般特征,一般特征也可以称之为低级别的特征;随着卷积神经网络300深度的加深,越往后的卷积层(例如326)提取到的特征越来越复杂,比如,高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
[0171]
池化层:
[0172]
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图4中320所示例的321-326各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
[0173]
神经网络层330:
[0174]
在经过卷积层/池化层320的处理后,卷积神经网络300还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层320只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络300需要利用神经网络层330来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层330中可以包括多层隐含层(如图4所示的331、332至33n)以及输出层340,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像检测以及图像超分辨率重建等等。
[0175]
在神经网络层330中的多层隐含层之后,也就是整个卷积神经网络300的最后层为输出层340,该输出层340具有类似分类交叉熵的损失函数,一旦整个卷积神经网络300的前向传播(如图4由310至340方向的传播为前向传播)完成,反向传播(如图4由340至310方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络300的损失,及卷积神经网络300通过输出层输出的预测值和目标值之间的损失(也可以称为误差)。
[0176]
需要说明的是,图4所示的卷积神经网络仅作为一种本技术实施例的目标神经网络的结构示例,在具体的应用中,本技术实施例的归一化处理方法所采用的卷积神经网络还可以以其他网络模型的形式存在。
[0177]
在一些卷积神经网络中,为了避免由于前层参数变化时,每层的输入分布也随之改变而导致的当前层训练较困难的问题,在卷积神经网络中使用批归一化(batch normalize,bn)层,可以得到比较均匀的样本点,以降低不同样本之间的差异性,使得卷积神经网络训练的过程变的较为简单。
[0178]
下面结合图5,对包含bn层的卷积神经网络进行详细描述。
[0179]
图5是本技术实施例提供的另一种卷积神经网络400的示意性框图。如图5所示,该
卷积神经网络400可以包括:卷积层110、池化层120、激活层130、bn层140以及全连接层150。
[0180]
应理解,激活层130以及全连接层150对应于图4中的神经网络层330。具体的有关卷积层110、池化层120、激活层130以及全连接层150的描述,请参见图4中的说明,此处暂不详述。下面仅对bn层140进行描述。
[0181]
bn层140:
[0182]
神经网络的数据流可以分为两个过程正向传播(forward propagation,fp)和反向传播(back propagation,bp)。
[0183]
正向传播是根据神经网络模型得到预测值。反向传播过程则是用于优化神经网络模型中的参数,使得正向传播输出的预测值尽可能的接近训练数据的先验知识(prior knowledge)。
[0184]
应理解,先验知识也被称为目标值或者基准真相(ground truth)。具体地,前向传递输入信号直至输出会产生损失,通过反向传播损失信息来更新初始的超神经网络模型中的参数,从而使损失收敛。反向传播算法是以损失为主导的反向传播运动,旨在得到最优的神经网络模型中的参数,例如权重矩阵。
[0185]
下面以正向传播为例,对优化之前bn层140的计算过程进行详细描述。
[0186]
在正向传播过程中,bn层140会对卷积层110输出的样本数据进行处理。具体的,bn层140可以先对卷积层110输出的样本数据进行批量求平均值的操作,再利用均值求方差,最后利用前面计算的均值和方差对该样本数据进行归一化操作。
[0187]
具体的,bn层140的计算包括均值计算,方差计算,归一化操作,缩放平移等过程。下面分别对上述各个计算过程进行详细描述。
[0188]
1、均值是通过如下的公式(1)进行计算的。
[0189][0190]
其中,x
i
表示所述多个数据样本中的第i个数据样本,是卷积层110输出的结果;
[0191]
m表示所述多个数据样本的数量;
[0192]
μ
b
表示所述m个数据样本x
i
对应的均值。
[0193]
2、方差是通过如下的公式(2)进行计算的。
[0194][0195]
其中,表示所述m个数据样本x
i
对应的方差。
[0196]
应理解,在公式(2)中,方差是基于m个数据样本x
i
以及该m个数据样本x
i
对应的均值μ
b
进行计算得到的。也就是说,方差与均值μ
b
之间有数据依赖的关系。
[0197]
3、归一化是通过如下的公式(3)进行计算的。
[0198][0199]
其中,表示归一化后的第i个样本点;
[0200]
ε表示归一化参数(其值由人工设定)。
[0201]
4、缩放平移是通过如下的公式(4)进行计算的。
[0202][0203]
其中,α表示缩放参数,β表示平移参数(初始值为随机设定,通过反向传播过程进行更新);
[0204]
y
i
表示bn层的处理结果。
[0205]
下面以反向传播为例,对优化之前bn层140的计算过程进行详细描述。
[0206]
在反向传播过程中,bn层140的计算包括参数偏导的计算过程,下面分别对各个参数的偏导的计算过程进行详细描述。
[0207]
应理解,参数偏导用于在下一次正向传播过程中对该参数进行修正,并使用修正后的参数进行下一次正向传播的计算。
[0208]
1、归一化后的样本点的偏导是通过如下的公式(5)进行计算的。
[0209][0210]
其中,e表示卷积神经网络的预测值和目标值之间的损失(也可称为误差),即反向传播过程的输入;
[0211]
表示损失e对归一化后的样本点的偏导;
[0212]
表示损失e对bn层的处理结果y
i
的偏导;
[0213]
表示bn层的处理结果y
i
对归一化后的样本点的偏导。
[0214]
2、方差的偏导是通过如下的公式(6)进行计算的。
[0215][0216]
其中,表示损失e对多个数据样本对应的方差的偏导;
[0217]
表示归一化后的样本点对多个数据样本对应的方差的偏导。
[0218]
3、均值μ
b
的偏导是通过如下的公式(7)进行计算的。
[0219][0220]
其中,表示损失e对多个数据样本x
i
对应的均值μ
b
的偏导。
[0221]
在公式(7)中,偏导是根据公式(5)的输出结果以及公式(6)的输出结果确定的。也就是说,偏导与偏导之间有数据依赖的关系。
[0222]
4、数据样本x
i
的偏导是通过如下的公式(7)进行计算的。
[0223][0224]
其中,表示损失e对数据样本x
i
的偏导。
[0225]
5、缩放参数α的偏导是通过如下的公式(9)进行计算的。
[0226][0227]
其中,表示损失e对缩放参数α的偏导。
[0228]
6、平移参数β的偏导是通过如下的公式(10)进行计算的。
[0229][0230]
其中,表示损失e对平移参数β的偏导。
[0231]
图6是本技术实施例提供的另一种可能的卷积神经网络500的示意性框图。
[0232]
应理解,该卷积神经网络500是一种densenet-b网络结构,是densenet网络中的一种类型,也是卷积神经网络中的一种类型。
[0233]
参见图6,该卷积神经网络500可以包括多个密集块(dense block)结构,每个denseblock中可以包括多个卷积原型损失(convolution prototype loss,cpl)结构。其中,cpl结构为:bn层+激活层+第一卷积层+bn层++激活层+第二卷积层。也就是说,bn层前面是一个第一卷积层,后面是一个激活层和第二卷积层。
[0234]
应理解,本技术实施例对卷积神经网络500中dense block结构的数量不做具体限定,为了便于描述,图6中以卷积神经网络500中包括2个dense block结构作为示例进行说明。
[0235]
还应理解,本技术实施例对dense block结构中包括的cpl结构的数量不做具体限定,为了便于描述,图6中以dense block结构中包括3个cpl结构作为示例进行说明。
[0236]
图7a为本技术实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器400(neural-network processing unit,npu)。该芯片可以被设置在如图2所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也可以被设置在如图2所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型/规则201。如图4-6所示的卷积神经网络中各层的算法均可在如图7a所示的芯片中得以实现。
[0237]
npu 400作为协处理器挂载到主中央处理器(central processing unit,cpu)上,
由主cpu分配任务。npu 400的核心部分为运算电路403,控制器404控制运算电路403提取存储器(权重存储器或输入存储器)中的数据并进行运算。
[0238]
需要说明的是,npu400也可以理解为是神经网络加速器、ai加速器或者ai芯片。
[0239]
在一些实现中,运算电路403内部包括多个处理单元(process engine,pe)。在一些实现中,运算电路403是二维脉动阵列。运算电路403还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路403是通用的矩阵处理器。
[0240]
举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路403从权重存储器402中取矩阵b相应的数据,并缓存在运算电路403中每一个pe上。运算电路403从输入存储器401中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器408(accumulator)中,例如,运算电路403将卷积神经网络中卷积层的输出结果保存在累加器408中。
[0241]
需要说明的是,累加器408通常具有存储或者缓存的功能,本技术实施例中提到的本地缓存可以位于累加器408中,或者说本技术实施例中提到的本地缓存就是指累加器408,因此,运算电路403将卷积层的输出结果保存在累加器408,向量计算单元407从累加器408中获取卷积层的数据结果以执行归一化层处理等。
[0242]
向量计算单元407可以对运算电路403的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元407可以用于神经网络中非卷积/非fc层的网络计算,如池化(pooling),批归一化(batch normalization,bn),局部响应归一化(local response normalization)等。在一些实现中,向量计算单元能407将经处理的输出的向量存储到统一存储器406。例如,向量计算单元407可以将非线性函数应用到运算电路403的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元407生成归一化的值、合并值,或二者均有。
[0243]
在一些实现中,处理过的输出的向量能够用作到运算电路403的激活输入,例如用于在神经网络中的后续层中的使用。
[0244]
应理解,向量计算单元407为用于执行本技术实施例中bn层的具体实现的硬件模块,例如,bn层的具体实现可以参考图8对应实施例的相关描述。
[0245]
图7b为本技术实施例提供的一种向量计算单元407的示意图,向量计算单元407主要包括激活模块、归一化模块和池化模块,其中,激活模块4071用于将非线性函数应用到每个累加值,以生成激活值,如非线性双曲函数tanh(x);归一化模块4072用于根据激活值生成归一化值,池化模块4073用于将聚集函数应用到归一化值以生成池化值,比如,在一些实现中,聚集函数是返回归一化值集合中最大值、最小值或平均值的函数。
[0246]
需要说明的是,激活模块、归一化模块和池化模块可以是同一个具备向量计算能力的电路模块,该电路模块可以分别执行激活、归一化和池化的功能,本技术对激活模块、归一化模块和池化模块的具体实现方式不做进一步限制。统一存储器406用于存放输入数据以及输出数据。
[0247]
权重数据直接通过存储单元访问控制器405(direct memory access controller,dmac)将外部存储器中的输入数据存入到输入存储器401和/或统一存储器406、将外部存储器中的权重数据存入权重存储器402,以及将统一存储器406中的数据存入
外部存储器。
[0248]
总线接口单元410(bus interface unit,biu),用于通过总线实现主cpu、dmac和取指存储器409之间进行交互。
[0249]
与控制器404连接的取指存储器409(instruction fetch buffer),用于存储控制器404使用的指令。
[0250]
控制器404,用于调用取指存储器409中缓存的指令,实现控制该运算加速器的工作过程。
[0251]
一般地,统一存储器406,输入存储器401,权重存储器402以及取指存储器409均为片上(on-chip)存储器,外部存储器为该npu外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic random accessmemory,ddr sdram)、高带宽存储器(high bandwidth memory,hbm)或其他可读可写的存储器。
[0252]
其中,图4-6所示的卷积神经网络中各层的运算可以由运算电路403或向量计算单元407执行。
[0253]
随着对卷积神经网络的深入研究,其执行效率或执行时间成为研究的热点。本技术实施例提供的一种归一化处理方法,可以降低卷积神经网络的执行时间或提高执行效率。
[0254]
图8是本技术实施例提供的一种归一化处理方法的示意性流程图。参见图8,该方法可以包括步骤810-830,下面分别对步骤810-830进行详细描述。
[0255]
步骤810:bn层140获取多个输入数据样本。
[0256]
具体的,以图5所示的卷积神经网络500的结构为例,该bn层140前面是第一卷积层,后面是一个激活层和第二卷积层。因此,bn层140获取到的多个输入数据样本也可以是从第一卷积层获取到的。也就是说,该多个输入数据样本是第一卷积层对多个图像数据进行特征提取得到的。具体的有关卷积层的描述,请参见图5中的说明,此处不再赘述。
[0257]
应理解,bn层140获取到的多个输入数据样本可以对应于上文中的x
i

[0258]
步骤820:在bn层140的正向传播的计算过程中,根据多个输入数据样本并行计算所述多个输入数据样本对应的均值和方差。
[0259]
参见图4中的描述,优化之前,bn层140的正向传播的计算过程中,方差与均值μ
b
之间的计算有数据依赖的关系。也就是说,优化之前,方差的计算与均值μ
b
的值有关,需要先计算出均值μ
b
的值,再根据值μ
b
的值计算出方差的值。这样,卷积神经网络的执行时间较长,执行效率较低。
[0260]
为了降低卷积神经网络的执行时间,提高执行效率,本技术实施例可以对正向传播的计算过程中方差与均值μ
b
的计算进行优化。优化之后,可以同时计算方差与均值μ
b
。也就是说,优化之后,方差与均值μ
b
之间的计算没有数据依赖的关系,方差的计算不需要等待均值μ
b
计算完之后再进行计算,而是可以同时计算方差与均值μ
b
。这样,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
[0261]
具体的,本技术实施例中可以根据bn层140获取到的多个输入数据样本x
i
,通过公
式(11)-(12)分别同时计算方差与均值μ
b

[0262][0263][0264]
由公式(11)-(12)可以看出,利用方差计算公式的转换,解决了公式(2)中方差的计算需依赖于均值μ
b
的计算结果,使得方差与均值μ
b
的计算可以分别同时根据数据样本x
i
计算得到。从而降低卷积神经网络的执行时间,提高了卷积神经网络的执行效率。
[0265]
可选地,在bn层140的反向传播过程中,由于均值μ
b
的偏导在计算时需要依赖方差的偏导结果,使得卷积神经网络的执行时间较长,执行效率较低。本技术实施例可以对bn层140的反向传播过程中的计算进行优化。优化之后,可以同时计算的偏导以及偏导也就是说,优化之后,偏导与偏导之间的计算没有数据依赖的关系,偏导在计算时不需要等待偏导计算完之后再进行计算,而是可以同时计算偏导以及偏导这样,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
[0266]
具体的,本技术实施例中可以根据缩放参数的偏导、平移参数的偏导,通过公式(13)-(14)分别同时计算偏导与偏导
[0267][0268][0269]
由公式(13)-(14)可以看出,利用偏导计算公式的转换,利用缩放参数的偏导、平移参数的偏导可以分别同时计算偏导与偏导解决了公式(7)中偏导的计算需依赖于偏导的计算结果,使得偏导与偏导的计算可以分别同时计算得到。从而降低卷积神经网络的执行时间,提高了卷积神经网络的执行效率。
[0270]
需要说明的是,在根据公式(13)-(14)分别同时计算偏导与偏导之前,需要先计算缩放参数的偏导、平移参数的偏导,例如,缩放参数α的偏导以及平移参数β的偏导具体的有关导以及偏导的计算,请参考公式(9)-(10)。
[0271]
步骤830:根据所述多个输入数据样本对应的均值和方差对所述多个输入数据样本进行处理,得到所述bn层140的处理结果。
[0272]
本技术实施例中,在bn层140的正向传播过程中,可以根据多个输入数据样本对应的均值和方差,并根据该均值和方差对该样本数据进行处理,得到所述bn层140的处理结果。
[0273]
具体的,上述对样本数据进行处理的过程可以包括:归一化、缩放平移等操作。具体的请参考公式(3)-(4),此处不再赘述。
[0274]
上述技术方案中,通过公式转换,解决bn层在计算过程中的数据依赖问题,使得数据可以同时并行计算。这样,可以降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。
[0275]
在卷积神经网络中,可以包括多个层。在优化之前,由于层与层之间是不同的指令映射,每个层之间的数据读写均需要经过外部存储器(也可以称为外存)中,例如,双倍速率(double data rate,ddr)存储器。这样,会导致卷积神经网络访问外存的次数增多,从而降低卷积神经网络在硬件上的执行效率。
[0276]
以图5所示的卷积神经网络500的结构为例,bn层前面是一个第一卷积层,后面是一个激活层和第二卷积层。在bn层的正向传播计算过程中,优化之前,卷积神经网络需要至少访问外存4次。具体的,这4次访问外存的过程如下所示:
[0277]
(1)从ddr中读取输入,计算第一卷积层的结果,并存储至ddr中;
[0278]
(2)从ddr中读取第一卷积层的结果,并行计算第一卷积层的结果对应的均值和方差,并存储至ddr中;
[0279]
(3)从ddr中读取第一卷积层的结果、该第一卷积层的结果对应的均值和方差,计算归一化的结果,并存储至ddr中;
[0280]
(4)从ddr中读取归一化的结果,进行激活层和第二卷积层的计算,并存储至ddr中。
[0281]
本技术实施例可以对卷积神经网络访问外存的次数进行优化,减少卷积神经网络访问外存的次数,从而降低卷积神经网络的执行时间,提高卷积神经网络的执行效率。具体的,可以对卷积神经网络中的多个层进行融合,将该多个层融合为一个层。这样将多个层之间的数据传输由通过外存实现变为通过本地缓存(local buffer)来实现,一个层的输出数据直接存储至本地缓存(local buffer),下一层的输入数据直接从本地缓存(local buffer)中获取。从而降低卷积神经网络的执行时间,提高卷积神经网络的执行效率,避免卷积神经网络多次访问外存所造成的较长的执行时间。
[0282]
应理解,所谓融合过程就是将层间的数据传输由通过外存(例如,ddr)转为通过本地缓存(local buffer)进行传输,从而减少卷积神经网络访问外存的次数。
[0283]
优化之前,由于层与层之间是不同的指令映射,每一层都需要至少一条指令来控制数据的读写,层与层之间是通过外存(例如,ddr)进行数据传输的。
[0284]
本技术实施例优化之后,可以通过重新划分的指令映射,将一个层的指令的输出作为另外一个层的指令输入,实现卷积神经网络中层与之间的融合。使得层与层之间是通过本地缓存(local buffer)进行数据传输,而不需要经过外存(例如,ddr)。
[0285]
下面以融合神经网络中的第一层和第二层为例,对层与层之间进行指令融合的过程进行举例说明。
[0286]
作为示例,想要实现第一层和第二层之间的融合,一方面,可以通过控制层的融合部件(例如融合引擎(fusion engine,fe)控制上述第一层和第二层融合的开关打开;另一方面,将第一层的计算指令的输出直接作为第二层的计算指令的输入。这样,可以实现第一层和第二层的融合,融合之后的两层可以理解为一层,数据之间的交换都是通过本地缓存进行的。
[0287]
应理解,第一层的计算指令可以是控制硬件实现第一层的计算任务的程序代码,同样的,第二层的计算指令可以是控制硬件实现第二层的计算的程序代码。
[0288]
还应理解,优化之前,由于层与层之间是不同的指令,不同的指令之间不进行交互,每一层通过计算指令来控制数据的读写。优化之后,通过不同的计算指令之间的交互,将一个层的计算指令的输出直接作为另外一个层的计算指令的输入。这样,一个层可以实现两个层的计算任务,也就可以理解为将两个层融合为一个层,一个层内的数据之间的数据交换是可以通过本地缓存进行的。
[0289]
以图5所示的卷积神经网络500的结构为例,bn层前面是一个第一卷积层,后面是一个激活层和第二卷积层。本技术实施例中可以根据上述融合的方法,将以下中的两层或多层进行融合:第一卷积层、bn层、激活层、第二卷积层。
[0290]
以将图5所示的卷积神经网络500中的第一卷积层、bn层、激活层以及第二卷积层融合为一层为例。本技术实施例中,卷积神经网络访问外存的次数可以由上述4次减少为1次:卷积神经网络从ddr中读取输入,计算第一卷积层的结果,并存储至本地缓存(localbuffer)中。其余的有关bn层、激活层以及第二卷积层的计算所需要的数据均可以从本地缓存(local buffer)中获取。例如,从本地缓存(local buffer)中读取第一卷积层的结果,并行计算第一卷积层的结果对应的均值和方差,并存储至本地缓存(local buffer)中。又如,从本地缓存(local buffer)中读取第一卷积层的结果、该第一卷积层的结果对应的均值和方差,计算归一化的结果,并存储至本地缓存(local buffer)中。又如,从本地缓存(local buffer)中读取归一化的结果,进行激活层和第二卷积层的计算,并存储至本地缓存(local buffer)中。
[0291]
可选地,在bn层的反向传播计算过程中,通过对卷积神经网络中的多个层进行融合,将该多个层融合为一个层,同样也可以避免卷积神经网络多次访问外存所造成的较长的执行时间。
[0292]
bn层的反向传播计算过程在优化之前,卷积神经网络需要至少访问外存4次。具体的,这4次访问外存的过程如下所示:
[0293]
(1)从ddr中读取卷积神经网络的预测值和目标值之间的损失(也可称为误差),即
反向传播过程的输入e,并计算损失e对bn层的处理结果y
i
的偏导并存储至ddr中;
[0294]
(2)从ddr中读取偏导并根据偏导计算损失e对缩放参数α的偏导以及损失e对平移参数β的偏导并存储至ddr中;
[0295]
(3)从ddr中读取偏导以及偏导并根据偏导以及偏导同时并行计算偏导与偏导并存储至ddr中。
[0296]
(4)从ddr中读取偏导与偏导并计算损失e对数据样本x
i
的偏导并存储至ddr中。
[0297]
本技术实施例中,以将图5所示的卷积神经网络500中的第一卷积层、bn层、激活层以及第二卷积层融合为一层为例。本技术实施例中,卷积神经网络访问外存的次数可以由上述4次减少为1次:bn层的反向传播计算过程在优化之后,卷积神经网络需要至少访问外存4次。
[0298]
具体的,这4次访问外存的过程如下所示:卷积神经网络从ddr中读取输入e,计算偏导并存储至本地缓存(local buffer)中。其余的有关bn层、激活层以及第二卷积层的计算所需要的数据均可以从本地缓存(local buffer)中获取。例如,从本地缓存(local buffer)中读取偏导并根据偏导计算损失e对缩放参数α的偏导以及损失e对平移参数β的偏导并存储至本地缓存(local buffer)中。又如,从本地缓存(local buffer)中读取偏导以及偏导并根据偏导以及偏导同时并行计算偏导与偏导并存储至本地缓存(local buffer)中。又如,从本地缓存(local buffer)中读取偏导与偏导并计算损失差e对数据样本x
i
的偏导并存储至本地缓存(localbuffer)中。
[0299]
应理解,在实现层间融合的方法中,可以使用优化前bn层对归一化处理方法,或者也可以使用优化后bn层对归一化处理方法,本技术对此不做具体限定。也就是说,以bn层的正向传播的计算过程为例,可以在实现层间融合的基础上,按照本技术实施例提供的归一化处理方法,同时并行计算均值和方差。或者,也可以在实现层间融合的基础上,按照优化前归一化处理方法,先计算出均值,再根据均值的计算结果确定方差。
[0300]
需要说明的是,本技术实施例中实现层间的融合的方法有多种。以图5所示的卷积神经网络500的结构为例,可以直接将第一卷积层、bn层、激活层以及第二卷积层合并为一层。或者也可以将bn层拆分为2层,将其中一层与第一卷积层进行融合得到第一部分,并另一层与激活层以及第二卷积层进行融合得到第二部分,最后,将第一部分和第二部分再进行融合。
[0301]
下面结合图9,对上述的一种进行层间的融合的具体实现方式进行详细描述。应注意,图9的例子仅仅是为了帮助本领域技术人员理解本技术实施例,而非要将申请实施例限制于图9所示例的具体数值或具体场景。本领域技术人员根据图9所给出的例子,显然可以进行各种等价的修改或变化,这样的修改和变化也落入本技术实施例的范围内。
[0302]
如图9所示,可以先将bn层拆分为两部分,分别为sub-bn1和sub-bn2。其中,sub-bn1是bn层中并行计算均值和方差的过程,sub-bn2是bn层中进行归一化操作的过程。将sub-bn1和第一卷积层进行融合得到f1,将sub-bn2和激活层、第二卷积层进行融合得到f2。最后将f1和f2进行融合得到f。从而实现将第一卷积层、bn层、激活层以及第二卷积层合并为一层。
[0303]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0304]
下面将结合图10,详细描述本技术装置的实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。
[0305]
图10是本技术实施例提供的一种归一化处理装置1000的示意性框图。该归一化处理装置1000可以通过软件、硬件或者两者的结合实现成为装置中的部分或者全部。
[0306]
该归一化处理装置1000包括:获取模块1010、计算模块1020、处理模块1030,其中:
[0307]
获取模块1010,用于批归一化bn层获取卷积神经网络中的多个数据样本,所述多个数据样本为所述卷积神经网络中卷积层的输出结果;
[0308]
计算模块1020,用于所述bn层在正向传播的计算过程中,根据所述多个数据样本同时计算所述多个数据样本对应的均值以及方差;
[0309]
处理模块1030,用于所述bn层根据所述多个数据样本对应的均值以及方差,对所述多个数据样本进行处理以得到所述bn层的处理结果。
[0310]
可选的,归一化处理装置1000还包括:确定模块1040,用于所述bn层确定所述卷积神经网络的损失,所述损失是根据目标值和所述卷积神经网络的预测值确定的,所述预测值是根据所述bn层的处理结果确定的;
[0311]
所述计算模块1020具体用于:所述bn层在反向传播的计算过程中,并行计算所述损失对所述均值的偏导以及所述损失差对所述方差的偏导。
[0312]
可选的,所述处理模块1030具体用于:根据所述均值、所述方差、缩放参数以及平移参数对所述多个数据样本进行处理,得到所述bn层的处理结果;
[0313]
所述计算模块1020具体用于:所述bn层在反向传播的计算过程中,根据所述损失分别计算所述缩放参数的偏导和所述平移参数的偏导;所述bn层根据所述缩放参数的偏导和所述平移参数的偏导,并行计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导。
[0314]
可选的,所述多个数据样本存储在本地缓存中,所述获取模块41010具体用于:所述bn层从所述本地缓存中获取所述多个数据样本。
[0315]
可选的,归一化处理装置1000还包括:存储模块1050,用于所述bn层将所述bn层的处理结果存储在本地缓存中,以便于所述bn层的下一层从所述本地缓存中获取所述bn层的处理结果。
[0316]
可选的,所述bn层的下一层为池化层和卷积层。
[0317]
可选的,所述计算模块1020具体用于:根据如下公式同时计算所述多个数据样本对应的均值和方差,
[0318][0319][0320]
其中,m表示所述多个数据样本的数量,i表示所述m个中的第i个,x
i
表示所述多个数据样本中的第i个数据样本,μ
b
表示所述多个数据样本对应的均值,表示所述多个数据样本对应的方差。
[0321]
可选的,所述计算模块1020具体用于:根据如下公式同时计算所述损失对所述均值的偏导以及所述损失对所述方差的偏导,
[0322][0323][0324]
其中,e表示所述损失,m表示所述多个数据样本的数量,i表示所述m个中的第i个,表示第i个数据样本归一化后的样本点,表示所述损失对所述均值的偏导,β表示所述平移参数,表示所述平移参数的偏导,α表示所述缩放参数,表示所述缩放参数的偏导,ε表示归一化参数,表示所述损失对所述方差的偏导。
[0325]
图11是本技术实施例提供的归一化处理装置1200的硬件结构示意图。图11所示的归一化处理装置1200(该装置1200具体可以是一种计算机设备)包括存储器1201、处理器1202、通信接口1203以及总线1204。其中,存储器1201、处理器1202、通信接口1203通过总线1204实现彼此之间的通信连接。
[0326]
存储器1201可以是只读存储器(read only memory,rom),静态存储设备,动态存储设备或者随机存取存储器(random access memory,ram)。存储器1201可以存储程序,当存储器1201中存储的程序被处理器1202执行时,处理器1202用于执行本技术实施例的归一化处理方法的各个步骤,例如,执行图8所示的各个步骤。
[0327]
应理解,本技术实施例所示的归一化处理装置1200可以是服务器,例如,可以是云
programmable gate array,fpga)或可编辑逻辑器件(programmable logic device,pld)的形式实现。
[0338]
可选地,在具体实现中,该处理器的个数不做限制。该处理器是通用处理器,可选地,该通用处理器能够通过硬件来实现或通过软件来实现。当通过硬件实现时,该处理器是逻辑电路、集成电路等;当通过软件来实现时,该处理器是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器集成在处理器中,位于该处理器之外,独立存在。
[0339]
上述实施例,全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本技术实施例所述的流程或功能。
[0340]
可选地,所述计算机为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令能够存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
[0341]
所述计算机可读存储介质是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质是固态硬盘。
[0342]
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示存在三种关系,例如,a和/或b,表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
[0343]
应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0344]
本领域普通技术人员能够意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员能够对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0345]
所属领域的技术人员能够清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,请参考前述方法实施例中的对应过程,在此不再赘述。
[0346]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,能够通过其它的方式实现。
[0347]
例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时能够有另外的划分方式,例如多个单元或组件结合或者集成到另一个系统,或一些特征能够被忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接是通过一些接口,装置或单元的间接耦合或通信连接,是电性,机械或其它的形式。
[0348]
可选地,所述作为分离部件说明的单元是物理上分开的,或者不是物理上分开的,作为单元显示的部件是物理上分开的,或者不是物理单元,即位于一个地方,或者也分布到多个网络单元上。根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0349]
另外,在本技术各个实施例中的各功能单元能够集成在一个处理单元中,可选地,是各个单元单独物理存在,或者两个或两个以上单元集成在一个单元中。
[0350]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,能够存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分能够以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种能够存储程序代码的介质。
[0351]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1