一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络模型的优化、数据处理方法及装置、存储介质与流程

2021-10-27 14:28:00 来源:中国专利 TAG:神经网络 数据处理 深度 装置 模型


1.本公开涉及深度学习领域,尤其涉及神经网络模型的优化、数据处理方法及装置、存储介质。


背景技术:

2.目前,逐元素操作(eltwise)层在神经网络中有广泛的应用。eltwise层是对多个输入进行元素级别的计算操作,并将结果输出至下一网络层。因此,eltwise层一般有多个输入和一个输出。
3.eltwise层的操作开销主要体现在三个方面:将输入从内存加载到处理器中,处理器进行计算操作,以及将计算获得的结果写回到内存中。


技术实现要素:

4.本公开提供了一种神经网络模型的优化、数据处理方法及装置、存储介质。
5.根据本公开实施例的第一方面,提供一种神经网络模型的优化方法,所述方法包括:从所述神经网络模型中选取至少两个目标网络层,其中,所述至少两个目标网络层包括第一网络层和与所述第一网络层的输入端连接的第二网络层,所述第一网络层为逐元素操作层;将所述至少两个目标网络层进行融合处理,得到优化后的所述神经网络模型。
6.上述实施例中,可以从神经网络模型中选取至少两个目标网络层,至少两个目标网络层包括了第一网络层以及与第一网络层的输入端连接的第二网络层,其中,第一网络层可以为逐元素操作层。针对至少两个目标网络层去进行融合处理,从而得到优化后的神经网络模型,实现了对神经网络模型进行优化的目的。另外,通过对神经网络模型的优化,可以减少神经网络模型的执行时间,提高神经网络模型的执行效率,进一步地,由于神经网络模型的执行时间减少了,因此提升了单位时间内神经网络模型处理数据的吞吐量,降低了单位时间内处理相同数据规模的延时和功耗。
7.在一些可选实施例中,所述将所述至少两个目标网络层进行融合处理,包括:将所述第一网络层的逐元素操作融合到所述第二网络层中。
8.在一些可选实施例中,所述从所述神经网络模型中选取至少两个目标网络层,包括:从与所述逐元素操作层的输入端连接的至少一个网络层中,选取网络深度最深的网络层作为所述第二网络层。
9.在一些可选实施例中,所述第二网络层用于实现第一操作,优化后的所述神经网络模型的数据处理过程包括:从第一存储设备读取所述第二网络层的第一输入数据和所述逐元素操作层的至少一个第二输入数据;通过融合层对所述第一输入数据进行所述第一操作的处理,得到第一处理结果,其中,所述融合层是通过对所述至少两个目标网络层进行融合处理得到的;通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果;将所述第二处理结果写入第二存储设备,其中,所述优化后的神经网络模型的输出结果是基于所述第二处理结果得到的。
10.在一些可选实施例中,所述方法还包括:确定所述融合处理得到的融合层一次性处理的数据的目标数目,所述目标数目为大于2的整数;所述通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果,包括:基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据,进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果,其中,所述第一处理结果和所述至少一个第二输入数据的数据数量之和等于所述目标数目。
11.在一些可选实施例中,所述确定所述融合层一次性处理的目标数目,包括:获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
12.在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据,进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果,包括:将同步读取的所述第一处理结果和所述至少一个第二输入数据写入所述目标数目的第一寄存设备中;将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第二处理结果。
13.在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述方法还包括:如果所述乘加操作中的至少一个特定参数包括目标数值,对所述第一网络层的逐元素操作进行优化处理,得到优化处理后的所述逐元素操作。
14.在一些可选实施例中,所述第一网络层的逐元素操作包括乘加操作,所述方法还包括:接收乘加指令;基于所述乘加指令,执行所述第一网络层的乘加操作。
15.根据本公开实施例的第二方面,提供一种数据处理方法,所述方法包括:从第一存储设备读取第一输入数据和至少一个第二输入数据;通过融合层对所述第一输入数据进行第一操作的处理,得到第一处理结果,其中,所述融合层是通过对第一网络层和第二网络层进行融合处理得到的,所述第一网络层为逐元素操作层,所述第二网络层的输出端与所述第一网络层的输入端连接;通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行逐元素操作的处理,得到第二处理结果;将所述第二处理结果写入第二存储设备。
16.上述实施例中,通过融合层对第二网络层的第一输入数据和逐元素操作层的至少一个第二输入数据进行处理,无需在得到第二网络层的第一处理结果后将其写入存储设备,在通过融合层对第一处理结果和至少一个第二输入数据进行逐元素操作处理时,也就无需从存储设备中读取第一处理结果,提高了数据处理的效率。
17.在一些可选实现方式中,所述方法还包括:确定所述融合层一次性处理的数据的目标数目,所述目标数目为大于2的整数;所述从第一存储设备读取第一输入数据和至少一个第二输入数据,包括:基于所述目标数目,同步读取至少一个第二输入数据。
18.在一些可能的实现方式中,所述确定所述融合层一次性处理的目标数目,包括:获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
19.在一些可能的实现方式中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述至少一个第二输入数据和/或所述第一处理结果被写入至少一个第一寄存设备中;所述通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行逐元素
操作的处理,得到第二处理结果,包括:对预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中存储的数据进行乘加操作。
20.在一种可能的实现方式中,响应于第二输入数据对应的指定参数为0,则在不对所述第二输入数据进行操作的情况下得到所述第二处理结果。
21.在一种可能的实现方式中,响应于所述第二输入数据对应的指定参数为1或-1,通过所述第二输入数据与所述第一处理结果的加减法得到所述第二处理结果。
22.在一种可能的实现方式中,对所述第一处理结果和所述至少一个第二输入数据进行乘加操作,得到所述第二处理结果。
23.可选地,还可以接收乘加指令,并基于乘加指令执行所述乘加操作。根据本公开实施例的第三方面,提供一种数据处理方法,所述方法包括:从存储设备读取目标数目个第一输入数据,所述目标数目为大于2的整数;对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,得到第一逐元素处理结果;将所述第一逐元素处理结果存储到所述存储设备。
24.上述实施例中,可以从存储设备中读取大于2的目标数目个第一输入数据,并对目标数据个第一输入数据进行逐元素操作的处理,减少了读取输入数据的次数以及在进行逐元素操作的处理过程中数据处理结果写回存储设备的次数,提高了逐元素操作的处理的效率。
25.在一些可选实施例中,在所述逐元素操作的多个待处理数据的数目大于预设数值的情况下,所述方法还包括:从所述存储设备获取多个第二输入数据,其中,所述多个第二输入数据包括所述第一逐元素处理结果;对所述多个第二输入数据进行所述逐元素操作的处理,得到第二逐元素处理结果。
26.在一些可选实施例中,所述方法还包括:获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
27.在一些可选实施例中,所述逐元素操作包括基于特定参数的乘加操作;所述对读取到的所述目标数目个第一输入数据进行逐元素操作的处理,得到第一逐元素处理结果,包括:将读取到的所述目标数目个第一输入数据写入所述目标数目的第一寄存设备中;将预先写入多个第二寄存设备中的特定参数与所述目标数目个第一寄存设备中的数据进行乘加操作,得到所述第一逐元素处理结果。
28.在一些可选实施例中,还包括:接收目标乘加指令;所述对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,包括:按照所述目标乘加指令,对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理。
29.在一些可选实施例中,所述目标数目个第一输入数据包括所述神经网络模型中的第二网络层的至少一个输入数据和所述第一网络层的至少一个输入数据,其中,所述第二网络层的输出端与所述第一网络层的输入端连接;所述对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,得到第一逐元素处理结果,包括:对所述第二网络层的至少一个输入数据进行所述第二网络层的操作处理,得到第一处理结果;对所述第一处理结果和所述第一网络层的至少一个输入数据进行逐元素操作的
处理,得到第一逐元素处理结果。
30.根据本公开实施例的第四方面,提供一种神经网络模型的优化装置,所述装置包括:选取模块,用于从所述神经网络模型中选取至少两个目标网络层,其中,所述至少两个目标网络层包括第一网络层和与所述第一网络层的输入端连接的第二网络层,所述第一网络层为逐元素操作层;融合处理模块,用于将所述至少两个目标网络层进行融合处理,得到优化后的所述神经网络模型。
31.在一些可选实施例中,所述融合处理模块包括:将所述第一网络层的逐元素操作融合到所述第二网络层中。
32.在一些可选实施例中,所述选取模块包括:从与所述逐元素操作层的输入端连接的至少一个网络层中,选取网络深度最深的网络层作为所述第二网络层。
33.在一些可选实施例中,所述第二网络层用于实现第一操作,所述装置还包括:第二读取模块,用于从第一存储设备读取所述第二网络层的第一输入数据和所述逐元素操作层的至少一个第二输入数据;第二数据处理模块,用于通过融合层对所述第一输入数据进行所述第一操作的处理,得到第一处理结果,其中,所述融合层是通过对所述至少两个目标网络层进行融合处理得到的;第三数据处理模块,用于通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果;第一数据写入模块,用于将所述第二处理结果写入第二存储设备,其中,所述优化后的神经网络模型的输出结果是基于所述第二处理结果得到的。
34.在一些可选实施例中,所述装置还包括:第一确定模块,用于确定所述融合处理得到的融合层一次性处理的数据的目标数目,所述目标数目为大于2的整数;所述第三数据处理模块包括:基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据,进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果,其中,所述第一处理结果和所述至少一个第二输入数据的数据数量之和等于所述目标数目。
35.在一些可选实施例中,所述第一确定模块包括:获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
36.在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述第三数据处理模块包括:将同步读取的所述第一处理结果和所述至少一个第二输入数据写入所述目标数目的第一寄存设备中;将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第二处理结果。
37.在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述装置还包括:优化处理模块,用于如果所述乘加操作中的至少一个特定参数包括目标数值,对所述第一网络层的逐元素操作进行优化处理,得到优化处理后的所述逐元素操作。
38.在一些可选实施例中,所述第一网络层的逐元素操作包括乘加操作,所述装置还包括:第一接收模块,用于接收乘加指令;执行模块,用于基于所述乘加指令,执行所述第一网络层的乘加操作。
39.根据本公开实施例的第五方面,提供一种数据处理装置,所述装置包括:第三读取模块,用于从第一存储设备读取第一输入数据和至少一个第二输入数据;第四数据处理模
块,用于通过融合层对所述第一输入数据进行第一操作的处理,得到第一处理结果,其中,所述融合层是通过对第一网络层和第二网络层进行融合处理得到的,所述第一网络层为逐元素操作层,所述第二网络层的输出端与所述第一网络层的输入端连接;第五数据处理模块,用于通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行逐元素操作的处理,得到第二处理结果;第二数据写入模块,用于将所述第二处理结果写入第二存储设备。
40.根据本公开实施例的第六方面,提供一种数据处理装置,所述装置包括:第一读取模块,用于从存储设备读取目标数目个第一输入数据,所述目标数目为大于2的整数;第一数据处理模块,用于对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,得到第一逐元素处理结果;存储模块,用于将所述第一逐元素处理结果存储到所述存储设备。
41.在一些可选实施例中,在所述逐元素操作的多个待处理数据的数目大于预设数值的情况下,所述装置还包括:数据获取模块,用于从所述存储设备获取多个第二输入数据,其中,所述多个第二输入数据包括所述第一逐元素处理结果;第六数据处理模块,用于对所述多个第二输入数据进行所述逐元素操作的处理,得到第二逐元素处理结果。
42.在一些可选实施例中,所述装置还包括:参数获取模块,用于获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;第二确定模块,用于基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
43.在一些可选实施例中,所述逐元素操作包括基于特定参数的乘加操作;所述第一数据处理模块包括:将读取到的所述目标数目个第一输入数据写入所述目标数目的第一寄存设备中;将预先写入多个第二寄存设备中的特定参数与所述目标数目个第一寄存设备中的数据进行乘加操作,得到所述第一逐元素处理结果。
44.在一些可选实施例中,还包括:第二接收模块,用于接收目标乘加指令;所述第一数据处理模块包括:按照所述目标乘加指令,对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理。
45.在一些可选实施例中,所述目标数目个第一输入数据包括所述神经网络模型中的第二网络层的至少一个输入数据和所述第一网络层的至少一个输入数据,其中,所述第二网络层的输出端与所述第一网络层的输入端连接;所述第一数据处理模块包括:对所述第二网络层的至少一个输入数据进行所述第二网络层的操作处理,得到第一处理结果;对所述第一处理结果和所述第一网络层的至少一个输入数据进行逐元素操作的处理,得到第一逐元素处理结果。
46.根据本公开实施例的第七方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面任一所述的神经网络模型的优化方法。
47.根据本公开实施例的第八方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第二方面所述的数据处理方法。
48.根据本公开实施例的第九方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第三方面任一所述的数据处理方法。
49.根据本公开实施例的第十方面,提供一种神经网络模型的优化装置,包括:处理
器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现第一方面中任一项所述的神经网络模型的优化方法。
50.根据本公开实施例的第十一方面,提供一种数据处理装置,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现第二方面所述的数据处理方法。
51.根据本公开实施例的第十二方面,提供一种数据处理装置,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现第三方面中任一项所述的数据处理方法。
52.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
53.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
54.图1是本公开根据一示例性实施例示出的一种神经网络模型的优化方法流程图;
55.图2a是本公开根据一示例性实施例示出的一种神经网络模型的网络结构示意图;
56.图2b是本公开根据一示例性实施例示出的一种神经网络模型优化后融合层处理过程示意示意图;
57.图3是本公开根据一示例性实施例示出的一种选取第二网络层的场景示意图;
58.图4是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
59.图5a是本公开根据一示例性实施例示出的一种神经网络模型的网络结构示意图;
60.图5b是本公开根据一示例性实施例示出的一种神经网络模型优化后的网络结构示意图;
61.图5c是本公开根据一示例性实施例示出的一种神经网络模型优化后融合层的处理过程示意图;
62.图6是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
63.图7是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
64.图8是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
65.图9是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
66.图10是本公开根据一示例性实施例示出的另一种神经网络模型的优化方法流程图;
67.图11是本公开根据一示例性实施例示出的一种数据处理方法流程图;
68.图12是本公开根据一示例性实施例示出的另一种数据处理方法流程图;
69.图13是本公开根据一示例性实施例示出的另一种数据处理方法流程图;
70.图14是本公开根据一示例性实施例示出的另一种数据处理方法流程图;
71.图15是本公开根据一示例性实施例示出的另一种数据处理方法流程图;
72.图16是本公开根据一示例性实施例示出的另一种数据处理方法流程图;
73.图17是本公开根据一示例性实施例示出的一种神经网络模型的优化装置框图;
74.图18是本公开根据一示例性实施例示出的一种数据处理装置框图;
75.图19是本公开根据一示例性实施例示出的另一种数据处理装置框图;
76.图20是本公开根据一示例性实施例示出的一种用于神经网络模型的优化装置的一结构示意图;
77.图21是本公开根据一示例性实施例示出的一种用于数据处理装置的一结构示意图。
具体实施方式
78.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
79.在本公开运行的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所运行的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中运行的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
80.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所运行的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
81.目前,逐元素操作层在神经网络模型中的应用越来越广泛,通过逐元素操作层可以进行数据融合、上下文语义关联等。本公开实施例提供了一种神经网络模型的优化方法,可以用于至少包括逐元素操作层和与逐元素操作层的输入端连接的至少一个网络层的神经网络模型,通过该神经网络模型可以执行各种计算机视觉任务,例如图像分类、任务目标检测、图像语义分割、人体关键点检测等等。
82.例如图1所示,图1是根据一示例性实施例示出的一种神经网络模型的优化方法,包括以下步骤:
83.在步骤101中,从所述神经网络模型中选取至少两个目标网络层。
84.在本公开实施例中,至少两个目标网络层包括第一网络层和与所述第一网络层的输入端连接的第二网络层,所述第一网络层为逐元素操作层。第二网络层包括但不限于该神经网络模型中的其他网络层,例如卷积层、激活函数层、池化层、归一化层、全连接层等。
85.例如神经网络模型如图2a所示,第一网络层为逐元素操作层,网络层1、网络层2均与逐元素操作层的输入端连接,则目标网络层包括逐元素操作层,另外网络层1和网络层2中的至少一个可以作为目标网络层中的第二网络层。
86.在步骤102中,将所述至少两个目标网络层进行融合处理,得到优化后的所述神经网络模型。
87.在本公开实施例中,融合处理是指将第一网络层的逐元素操作融合到第二网络层中,相当于通过一个融合层,对至少两个目标网络层进行融合处理。
88.例如,在优化前,神经网络模型的结构如图2a所示,至少两个目标网络层包括网络层1和逐元素操作层,将逐元素操作层的逐元素操作融合到网络层1中,优化后的神经网络模型的结构如图2b所示。通过融合层,对至少两个目标网络层进行融合处理。
89.在融合前的网络结构下,网络层1需要读取输入数据b,对输入数据b进行第一操作的处理,得到第一处理结果a,然后将第一处理结果a写入存储设备,逐元素操作层需要读取第一处理结果a和输入数据b,执行对第一处理结果和输入数据b的逐元素操作,以及将逐元素操作的第二处理结果写回存储设备。但是在将逐元素操作层和网络层1融合得到融合层之后,融合层读取输入数据b,对输入数据b进行第一操作的处理得到第一处理结果,并执行第一处理结果和输入数据b的逐元素操作,得到第二处理结果,并将第二处理结果写入存储设备,从而可以省略将第一处理结果a写入存储设备以及逐元素操作层读取第一处理结果a和输入数据b的读写操作。
90.上述实施例中,可以从神经网络模型中选取至少两个目标网络层,至少两个目标网络层包括了第一网络层以及与第一网络层的输入端连接的第二网络层,其中,第一网络层可以为逐元素操作层。针对至少两个目标网络层去进行融合处理,从而得到优化后的神经网络模型,实现了对神经网络模型进行优化的目的。另外,通过对神经网络模型的优化,可以减少神经网络模型的执行时间,提高神经网络模型的执行效率,进一步地,由于神经网络模型的执行时间减少了,因此提升了单位时间内神经网络模型处理数据的吞吐量,降低了单位时间内处理相同数据规模的延时和功耗。
91.在一些可选实施例中,步骤101可以包括:
92.从与所述逐元素操作层的输入端连接的至少一个网络层中,选取网络深度最深的网络层作为所述第二网络层。
93.本公开实施例中,第一网络层为逐元素操作层,进一步地,可以根据神经网络模型的网络结构来选取目标网络层中的第二网络层。如果与逐元素操作层的输入端连接的网络层有一个,则该网络层可以作为第二网络层,如果与逐元素操作层的输入端连接的网络层有多个,则可以将网络深度最深的网络层作为第二网络层。
94.例如图3所示,网络层1、2和3均与逐元素操作层的输入端连接,在神经网络模型中,网络层2和3的网络深度为n,n为正整数,网络层1的网络深度为n 1,则网络层1可以作为第二网络层。
95.上述实施例中,可以根据神经网络模型的网络结构,从神经网络模型中选取第二网络层,实现简便,可用性高。
96.在一些可选实施例中,第二网络层可以用于实现第一操作,第一操作是与第二网络层对应的,例如第二网络层为卷积层,则第一操作为卷积操作。或者第二网络层为归一化层,第一操作为归一化操作。
97.例如图4所示,优化后的神经网络模型的数据处理过程可以包括:
98.在步骤201中,从第一存储设备读取所述第二网络层的第一输入数据和所述逐元
素操作层的至少一个第二输入数据。
99.在本公开实施例中,第一存储设备可以包括但不限于处理器的内存。第一输入数据是目标网络层中的第二网络层的输入数据,第二网络层对第一输入数据进行第一操作后,会得到第一处理结果,第二输入数据可以包括第一网络层的输入数据中除了第一处理结果之外的其他输入数据。
100.例如,第二网络层的第一输入数据包括d,第二网络层对第一输入数据执行第一操作后,得到第一处理结果a,逐元素操作层的多个输入数据包括a、b和c,则第二输入数据可以包括b和c。
101.在步骤202中,通过融合层对所述第一输入数据进行所述第一操作的处理,得到第一处理结果。
102.由于优化后的神经网络模型将第一网络层的逐元素操作融合到了第二网络层中,得到一个融合层。通过融合层先对第一输入数据进行第一操作的处理,从而得到第一处理结果。
103.以第二网络层包括卷积层为例,按照第二网络层对应的第一操作,对读取的第二网络层的第一输入数据进行卷积处理,从而可以得到第一处理结果。
104.在步骤203中,通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果。
105.在本公开实施例中,在得到第一处理结果之后,再通过融合层对第一处理结果和之前读取的第二输入数据进行逐元素操作层的逐元素操作的处理,从而可以得到第二处理结果。
106.例如,逐元素操作包括求和操作,通过融合层可以对第一处理结果和第二输入数据进行求和操作,得到第二处理结果。
107.在步骤204中,将所述第二处理结果写入第二存储设备。
108.在本公开实施例中,第二存储设备可以包括但不限于处理器的内存,其中,第二存储设备与第一存储设备可以相同或不同,例如第二存储设备可以与第一存储设备为同一内存或不同的内存,本公开对此不作限定。最终优化后的神经网络模型的输出结果会基于所述第二处理结果得到的。
109.上述实施例中,通过融合层对第二网络层的第一输入数据和所述逐元素操作层的至少一个第二输入数据进行处理,不需要将第一处理结果先写入存储设备后,执行逐元素操作的处理时再读取出来,从而提高了数据处理的效率。
110.对上述方案进一步举例说明如下。
111.原始的神经网络模型的网络结构例如图5a所示,在图5a中,逐元素操作层有两个输入a和b,卷积层1和卷积层2在得到a和b之后,分别将a和b写入存储设备。逐元素操作层将输入a和输入b读取到处理器中,然后做输入a和输入b的逐元素操作,例如为逐元素求和操作,再将得到的结果写回存储设备,处理过程例如图5b所示。
112.在将逐元素操作层和卷积层2融合得到融合层之后,融合层的处理过程例如图5c所示,融合层读取输入a,对输入a进行卷积层2的卷积处理,得到b,然后进行a和b的逐元素求和操作,得到计算结果,并将计算结果写入存储设备,从而可以省略掉卷积层2存储b和逐元素操作层读取输入b的操作,而融合层最终写回存储设备的结果与优化之前逐元素操作
层的输出结果相同。
113.上述实施例中,不需要将卷积层2的处理结果b先写入存储设备后再在执行逐元素操作的处理时进行读取,从而优化了数据io流程,提高了数据处理的效率。
114.在一些可选实施例中,例如图6所示,上述方法还可以包括:
115.在步骤205中,确定所述融合处理得到的融合层一次性处理的数据的目标数目。
116.在本公开实施例中,目标数目可以为大于2的整数。例如,融合层一次性可以处理的数据为3个、4个或更多。
117.相应地,步骤203可以包括:
118.基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据,进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果。
119.在本公开实施例中,第一处理结果和所述至少一个第二输入数据的数据数量之和等于所述目标数目。
120.例如,目标数目为3,融合层同步读取3个数据,读取的3个数据中包括1个第一处理结果和2个第二输入数据。
121.上述实施例中,通过融合层对目标数据个第一处理结果和所述至少一个第二输入数据进行逐元素操作的处理,减少了读取输入数据的次数以及在进行逐元素操作的处理过程中数据处理结果写回存储设备的次数,提高了逐元素操作的处理的效率。
122.在一些可选实施例中,例如图7所示,步骤205可以包括:
123.在步骤205-1中,获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数。
124.在本公开实施例中,多个候选数据数量可以是大于2的整数,例如3、4或更多。测试性能参数至少可以用来衡量神经网络模型中逐元素操作层的性能。
125.例如,在候选数据数量为3时,获取融合层针对3个候选数据数量,执行逐元素操作的处理时的测试性能参数,或者获取融合层和与融合层的输入端、和/或输出端连接的至少一个网络层,在处理3个候选数据数量时的测试性能参数,或者获取优化后的神经网络模型处理3个候选数据数量时的测试性能参数。
126.在一种可能地实现方式下,测试性能参数可以包括获得运行多个候选数据得到处理结果的运行时长。
127.在步骤205-2中,基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
128.在本公开实施例中,可以基于测试性能参数,选取最优的测试性能参数所对应的候选数据数量作为目标数目。例如,候选数据数量包括3、4、5、6、7和8,测试性能参数包括运行时长,神经网络模型在候选数据数量为8时,运行时长最短,那么目标数目可以为8。
129.上述实施例中,可以基于神经网络模型分别在多个候选数据数量条件下的测试性能参数,从多个候选数据数量中确定所述目标数目,实现简便,可用性高。
130.在一些可选实施例中,第一网络层的逐元素操作包括基于特定参数的乘加操作,其中,指定参数可以为coeff参数。例如图8所示,上述步骤203可以包括:
131.在步骤203-1中,将同步读取的所述第一处理结果和所述至少一个第二输入数据写入所述目标数目的第一寄存设备中。
132.在本公开实施例中,第一处理结果和至少一个第二输入数据的数据数量之和为目标数目,第一寄存设备的数目也为目标数目,则可以将同步读取的目标数目个数据写入目标数目的第一寄存设备中。
133.在步骤203-2中,将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第二处理结果。
134.在本公开实施例中,特定参数已经预先写入不同的第二寄存设备中,特定参数的数目也为目标数目,第二寄存设备的数目也为目标数目。将第二寄存设备中的特定参数直接与第一寄存设备中的数据乘加操作,从而可以得到融合层执行逐元素操作的处理所对应的第二处理结果。
135.上述实施例中,可以在基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据后,将同步读取的所述第一处理结果和所述至少一个第二输入数据写入所述目标数目的第一寄存设备中,进一步地,将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第二处理结果。无需不断更新第二寄存设备中存放的指定参数,减少了计算过程的开销。
136.在一些可选实施例中,第一网络层的逐元素操作包括基于特定参数的乘加操作,例如图9所示,上述方法还可以包括:
137.在步骤301中,如果所述乘加操作中的至少一个特定参数包括目标数值,对所述第一网络层的逐元素操作进行优化处理,得到优化处理后的所述逐元素操作。
138.在本公开实施例中,目标数值可以包括但不限于1、-1和0。
139.其中,如果目标数值为1,逐元素操作的优化处理可以包括对所述目标数值对应的数据不再执行乘加操作,只执行求和操作。例如,同步读取的数据数量为3,分别包括a、b和c,优化处理之前的逐元素操作为a
×
coeff_a b
×
coeff_b c
×
coeff_c,coeff_a为1,则优化处理后的逐元素操作为a b
×
coeff_b c
×
coeff_c。
140.其中,如果目标数值为-1,逐元素操作的优化处理可以包括对所述目标数值对应的数据不再执行乘加操作,只执行求差操作。例如,同步读取的数据数量为3,分别包括a、b和c,优化处理之前的逐元素操作为a
×
coeff_a b
×
coeff_b c
×
coeff_c,coeffb为1,则优化处理后的逐元素操作为a
×
coeff_a-b c
×
coeff_c。
141.其中,如果目标数值为0,逐元素操作的优化处理可以包括对所述目标数值对应的数据不再执行任何操作。例如,同步读取的数据数量为3,分别包括a、b和c,优化处理之前的逐元素操作为a
×
coeff_a b
×
coeff_b c
×
coeff_c,coeff_c为0,则优化处理后的逐元素操作为a
×
coeff_a b
×
coeff_b。
142.上述实施例中,可以在第一网络层的逐元素操作包括基于特定参数的乘加操作的情况下,如果所述乘加操作中的至少一个特定参数包括目标数值,可以对逐元素操作进行优化处理,实现数据优化处理的目的。
143.对上述过程进一步举例说明如下。
144.第一网络层的逐元素操作包括基于特定参数的乘加操作,为了保证代码的通用性,一般常见的实现会直接写成coeff_a
×
a[0] coeff_b
×
b[0] c
×
coeff_c
……
的形式,但是在某些情况下,逐元素操作可以进行优化处理。
[0145]
例如,当输入对应的coeff参数为1时,直接进行加法运算,即a[0] b[0] c0.
……
,避免处理器再去做乘法运算。
[0146]
再例如,当输入对应的coeff参数为0时,直接跳过该输入。有2个输入a和b c,coeff_a为1,coeff_b为0,则将输入a和c直接拷贝到输出中。再例如,有三个输入a,b和c,coeff_a为1,coeff_b为0,coeff_c为1,则直接计算a[0] c[0],不需要对b做任何操作。
[0147]
再例如,当输入对应的coeff参数为-1时,直接进行减法运算。假设有三个输入a和b,coeff_a为1,coeff_b为-1,coeff_c为0,则直接运算a0.–
b[0]。
[0148]
在一些可选实施例中,第一网络层的逐元素操作包括乘加操作,例如图10所示,上述方法还可以包括:
[0149]
在步骤401中,接收乘加指令。
[0150]
在本公开实施例中,神经网络模型可以接收乘加指令,在一种可能地实现方式中,该乘加指令是由处理器生成并发送给神经网络模型的。
[0151]
在步骤402中,基于所述乘加指令,执行所述第一网络层的乘加操作。
[0152]
本公开实施例中,神经网络模型可以基于接收到的乘加指令,直接执行第一网络层的乘加操作,不再需要先执行乘操作再执行求和操作。
[0153]
上述实施例中,可以通过乘加指令进一步优化神经网络模型对第一网络层的逐元素操作的处理过程,可用性高。
[0154]
例如,当输入对应的coeff参数中有些参数为1,而另外的不为1或0时,因为现在大多数处理器都支持乘加操作,在这种情况下可以使用乘加操作来完成。例如有三个输入a、b和c,coeff_a为1,coeff_b大于1,coeff_c也大于1,则写为a[0] coeff_b
×
b[0] coeff_c
×
c[0]。该乘加操作通过乘加指令完成,不需要先用两条乘法指令再用一条加法指令,在这种情况下就刚好可以通过乘加操作来实现。
[0155]
本公开实施例还提供了一种数据处理方法,可以用于至少包括逐元素操作层的神经网络模型,例如图11所示,图11是根据一示例性实施例示出的一种数据处理方法,包括以下步骤:
[0156]
在步骤501中,从存储设备读取目标数目个第一输入数据。
[0157]
在本公开实施例中,存储设备可以包括但不限于处理器的内存。目标数目可以是大于2的整数。
[0158]
在步骤502中,对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,得到第一逐元素处理结果。
[0159]
在本公开实施例中,神经网络模型中至少包括了第一网络层,第一网络层是对输入数据执行逐元素操作的处理的网络层,对读取到的目标数目个第一输入数据可以进行逐元素操作的处理,从而得到第一逐元素处理结果。
[0160]
在步骤503中,将所述第一逐元素处理结果存储到所述存储设备。
[0161]
在本公开实施例中,第一逐元素处理结果是对读取的目标数目个第一输入数据后进行逐元素操作的处理后,所得到的处理结果。可以将该第一逐元素处理结果存储到上述的存储设备,例如处理器内存中。
[0162]
例如目标数目为n,n为大于2的整数。最终的第一逐元素处理结果可以表示为output[0],output[1],
……
output[m]。在计算output[0]的情况下,以求和操作为例,先计算前两个输入数据,即output[0]=input[0][0] input[1][0]。将output[0]写回到内存,
再从内存中读取output[0]与下一个输入数据input[2][0]进行计算,得到output[0]=output[0] input[2][0]。以此类推。
[0163]
那么在计算input[0][0] input[1][0] input[2][0]的时候,就需要进行三次input读写、一次output读取以及两次output写回。在输入数据越多的情况下,output读取以及output写回的次数就会越多。
[0164]
如果每次读取目标数目的第一输入数据进行逐元素操作处理,假设目标数目为3,那么output[0]=input[0][0] input[1][0] input[2][0]。需要进行三次input读取,以及一次output写回。很明显相对于之前的处理方式减少了读取次数和写回次数。
[0165]
上述实施例中,可以从存储设备中读取大于2的目标数目个第一输入数据,并对目标数据个第一输入数据进行逐元素操作的处理,减少了读取输入数据的次数以及在进行逐元素操作的处理过程中数据处理结果写回存储设备的次数,提高了逐元素操作的处理的效率。
[0166]
在一些可选实施例中,在所述逐元素操作的多个待处理数据的数目大于预设数值的情况下,其中,预设数值可以小于或等于目标数目,即逐元素操作的待处理数据的总数目超过了目标数目,不能通过一次性读取目标数目个第一输入数据来完成第一网络层的逐元素操作的处理,那么例如图12所示,上述方法还可以包括:
[0167]
在步骤504中,从所述存储设备获取多个第二输入数据。
[0168]
在本公开实施例中,多个第二输入数据包括所述第一逐元素处理结果,之前已经将第一逐元素处理结果存储在存储设备中,此时需要从存储设备中再次读取出第一逐元素处理结果,并将其作为多个第二输入数据中的一个,另外还可以从存储设备中读取其他需要进行逐元素操作的输入数据作为第二输入数据。
[0169]
例如,在计算output[0]时,目标数目为3,多个待处理数据的数目为5,则在计算output[0]=input[0][0] input[1][0] input[2][0],得到第一逐元素处理结果之后,将第一逐元素处理结果output[0]写入存储设备。再次从存储设备中读取input[3][0]、input[4][0]、以及之前的第一逐元素处理结果作为多个第二输入数据。
[0170]
在步骤505中,对所述多个第二输入数据进行所述逐元素操作的处理,得到第二逐元素处理结果。
[0171]
再次对多个第二输入数据进行所述逐元素操作的处理,得到第二逐元素处理结果。如果待处理数据的数目更多,则按照上述方式多次进行逐元素操作处理。
[0172]
上述实施例中,在逐元素操作的多个待处理数据的数目较多时,可以重复获取多个第二输入数据,多个第二输入数据包括上一次进行逐元素操作的处理所得到的第一逐元素处理结果,从而得到第二逐元素处理结果,减少了读取输入数据的次数以及在进行逐元素操作的处理过程中数据处理结果写回存储设备的次数,提高了逐元素操作的处理的效率,可用性高。
[0173]
对上述过程进一步举例说明如下。
[0174]
当输入第一网络层的第一输入数据的数目为多个时,假设数目为n,并将所有输入表示为input[0],input[1]

input[n],每个输入数据里面还有很多个元素,例如第一个input中的第一个元素就表示为input[0][0],输出的个数只有1个,被表示为output。假设此处第一网络层的逐元素操作为求和操作,其他两种类似,不再赘述。如果采用常见的逐元
素操作的实现方式,就会被实现为:
[0175]
先累加前两个输入
[0176]
output[0]=input[0][0] input[1][0];
[0177]
output[1]=input[0][1] input[1][1]
……
[0178]
当前两个输入被累加完毕后,再累加第三个:
[0179]
output[0]=output[0] input[2][0];
[0180]
output[1]=output[1] input[2][1]
……
[0181]
以此类推,直到所有input被累加完毕。
[0182]
通过上述例子可以发现,在累加前两个输入时,会把结果写回output,在累加第三个输入时,会从存储设备中读取output的数据,计算完后再把结果写回output。
[0183]
如果目标数目大于2,假设为3,可以得到公式1:
[0184]
output[0]=input[0][0] input[1][0] input[2]0.ꢀꢀꢀꢀ
公式1
[0185]
公式1里包括三次input读取、一次output写回。而之前每次读取2个元素的过程则包括三次input读取、一次output读取和两次output写回。而且当输入的个数越多,多余的output读取和写回次数就越多。由此可见,如果从存储设备读取目标数目个输入数据,可以节省更多的读取和写回操作。
[0186]
在一些可选实施例中,例如图13所示,上述方法还可以包括:
[0187]
在步骤500-1中,获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数。
[0188]
在本公开实施例中,并未一次性读取所有的待处理数据就是最好的,例如待处理数据的总数目为100时,如果一次性读取100个输入数据,那么output[0]=input[0][0] input[1][0]
……
input[99][0]。
[0189]
但是在存储设备中,是先存放输入数据input[0]对应的所有元素,然后存放输入数据input[1]对应的所有元素,以此类推。在读取input[0][0]和input[1][0]的时候,是跨步读取的,如果目标数目达到100,那么跨步非常大,会导致整个神经网络模型的性能急剧下降。
[0190]
在本公开实施例中,可以分别获取该神经网络模型分别在多个候选数据数量条件下的测试性能参数,在一种可选实现方式中,多个候选数据数量大于2,测试性能参数至少可以用来衡量神经网络模型中第一网络层的性能。
[0191]
例如,在候选数据数量为3时,获取第一网络层针对3个候选数据数量,执行逐元素操作的处理时获得处理结果的测试性能参数,或者第一网络层和与第一网络层的输入端、和/或输出端连接的至少一个网络层处理3个候选数据数量,得到处理结果的测试性能参数,或者整个神经网络模型处理3个候选数据数量获得输出结果的测试性能参数。
[0192]
在一种可选实现方式中,测试性能参数可以包括运行时长。
[0193]
在步骤500-2中,基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
[0194]
在本公开实施例中,可以根据测试性能参数,选取测试性能参数最优的候选数据数量作为目标数目。
[0195]
例如,在候选数据数量为7时,测试性能参数最优,假设测试性能参数包括运行时
长,候选数据数量为7时,运行时长最短,则目标数目为7。
[0196]
上述实施例中,在确保神经网络的性能的前提下,减少第一网络层执行逐元素操作的处理过程中的读取次数和写回次数,提高了神经网络模型的性能和效率。
[0197]
对上述过程进一步举例说明如下。
[0198]
当第一输入数据的数目很多时,比如说n=100,有100个第一输入数据,如果一次处理100个输入中对应位置的元素,例如:
[0199]
output[0]=input[0][0] input[1][0]

input[99]0.ꢀꢀꢀ
公式2
[0200]
上面公式2中,需要从100个第一输入数据中,分别读取他们的第一个元素,然后做计算。对于常用的处理器而言,处理器在从内存中读取连续存储的数据时,性能会更好,如果跨步读取数据的跨度(stride)太大,会导致性能下降。
[0201]
在存储设备,例如内存中,是先连续存放input[0]的所有元素,然后再连续存放input[1]的所有元素,以此类推。而直接访问input[0]和input[1]中对应位置的元素时,是跨步去读取的。在上面的例子中,当第一输入数据的数目为100时,跨步就会非常大(访问到第100个时,跨步大小就为99乘以单个input的长度),导致性能急剧下降。
[0202]
因此,在本公开实施例中,将一次处理多个输入和逐步累加两种形式相结合,可以先处理前10个,然后再处理第10到第20个,直到100个输入处理完毕,例如:
[0203]
output[0]=input[0][0] input[1][0]

input[9][0];
[0204]
output[1]=input[0][1] input[1][1]

input[9][1];
[0205]
output[2]=input[0][2] input[1][2]

input[9][2]
[0206]
……
[0207]
output[0]=output[0] input[10][0]

input[19][0];
[0208]
output[1]=output[1] input[10][1]

input[19][1];
[0209]
output[2]=output[2] input[10][2]

input[19][2];
[0210]
……
[0211]
这样既一次处理了多个输入,省去了一定数量的多余output读取和写回操作,又避免了很长的跨步访问。另外,这里一次能够处理的多个input的数量,取决于具体处理器的性能,可以通过获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数得到,即尝试一次性处理候选数据数量分别为2个,3个,4个,5个等不同数量的input,然后选择测试性能参数最优的候选数据数量作为目标数目。
[0212]
在一些可选实施例中,在逐元素操作包括基于特定参数的乘加操作的情况下,例如图14所示,上述步骤502可以包括:
[0213]
在步骤502-1中,将读取到的所述目标数目个第一输入数据写入所述目标数目的第一寄存设备中。
[0214]
在本公开实施例中,可以将读取到的目标数目个第一输入数据分别写入不同的第一寄存设备中。
[0215]
在步骤502-2中,将预先写入多个第二寄存设备中的特定参数与所述目标数目个第一寄存设备中的数据进行乘加操作,得到所述第一逐元素处理结果。
[0216]
在本公开实施例中,特定参数已经预先写入不同的第二寄存设备中,特定参数的数目也为目标数目,第二寄存设备的数目也为目标数目。将第二寄存设备中的特定参数直
接与第一寄存设备中的数据乘加操作,从而可以得到融合层执行逐元素操作的处理所对应的第一逐元素处理结果。
[0217]
上述实施例中,可以在同步读取目标数据个第一输入数据后,将同步读取的目标数据个第一输入数据写入所述目标数目的第一寄存设备中,进一步地,将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第一逐元素处理结果。上述过程无需不断更新第二寄存设备中存放的指定参数,减少了计算过程的开销。
[0218]
对上述过程进一步举例说明如下。
[0219]
在一次性处理多个第一输入数据时,逐元素操作包括基于特定参数coeff的乘加操作的情况下,如果一次性处理的input数量太多,在读取coeff参数方面也可以采取一种优化方法。一般处理器都有多个寄存器用来存放数据。假设处理器中可用的寄存器有32个,包括16个第一寄存器和16个第二寄存器。可以把16个第二寄存器用来存放coeff参数,分别存放16个第一输入数据对应的coeff参数。然后在计算16个第一输入数据的时候,通过16个第一寄存器存放16个第一输入数据,不用再去读取coeff参数(因为已经放在第二寄存器里面了),直接将预先写入多个第二寄存设备中的特定参数与所述目标数目个第一寄存设备中的数据进行乘加操作,得到所述第一逐元素处理结果。
[0220]
如果只用8个第二寄存器存放coeff参数,而一次性需要计算16个第一输入数据时,就会出现反复读取coeff的问题,因为当算完前8个第一输入数据后,就需要把8个寄存器中的coeff换成后面8个第一输入数据对应的coeff参数,以此类推,需要不断地去更新存放coeff的第二寄存器,造成一定的开销。
[0221]
此处设定存放coeff参数的寄存器数量时,需要和一次性处理的目标数目个第一输入数据数量相结合。比如说测试发现一次性处理8个第一输入数据的测试性能参数最优,然后寄存器可用的数量又远大于16个,那么就可以拿8个寄存器出来存放coeff参数,另外8个寄存器可以用来存放读取的第一输入数据。
[0222]
如果测试发现测试发现一次性处理16个第一输入数据的测试性能参数最优,但是寄存器可用的数量小于32个了,就需要做折中,变为一次性处理8个第一输入数据,性能会相对变差一些,但是coeff参数这边又会有所提升。总之具体情况具体分析,最终联合测试性能参数和寄存器数目得到最好的一种实现方式。
[0223]
在一些可选实施例中,例如图15所示,上述方法还可以包括:
[0224]
在步骤506中,接收目标乘加指令。
[0225]
在本公开实施例中,可以直接根据第一网络层的逐元素操作生成目标乘加指令,由处理器将目标乘加指令发送给神经网络模型。或者在第一网络层的逐元素操作包括基于特定参数的乘加操作的情况下,如果所述乘加操作中的至少一个特定参数包括目标数值,可以对第一网络层的逐元素操作进行优化处理,得到优化处理后的所述逐元素操作,进一步地,根据优化处理后的逐元素操作生成目标乘加指令并发送给神经网络模型。神经网络模型可以接收上述目标乘加指令。
[0226]
其中,优化处理的过程与上述步骤301中的优化处理过程相同,在此不再赘述。
[0227]
相应地,步骤502可以包括:
[0228]
按照所述目标乘加指令,对读取到的所述目标数目个第一输入数据进行神经网络
模型中第一网络层的逐元素操作的处理。
[0229]
在本公开实施例中,神经网络模型可以直接按照接收到的目标乘加指令,对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理。
[0230]
上述实施例中,可以通过目标乘加指令进一步优化第一网络层对数据进行逐元素操作的处理过程,可用性高。
[0231]
在一些可选实施例中,目标数目个第一输入数据包括所述神经网络模型中的第二网络层的至少一个输入数据和所述第一网络层的至少一个输入数据,其中,所述第二网络层的输出端与所述第一网络层的输入端连接,例如图16所示。
[0232]
相应地,步骤502可以包括:
[0233]
在步骤502-3中,对所述第二网络层的至少一个输入数据进行所述第二网络层的操作处理,得到第一处理结果。
[0234]
在本公开实施例中,第二网络层的操作处理与第二网络层对应,例如第二网络层为归一化层时,第二网络层的操作包括归一化操作。先对第二网络层的至少一个输入数据进行所述第二网络层的操作处理,从而得到第一处理结果。
[0235]
在步骤502-4中,对所述第一处理结果和所述第一网络层的至少一个输入数据进行逐元素操作的处理,得到第一逐元素处理结果。
[0236]
在本公开实施例中,将第一处理结果和第一网络层的至少一个输入数据作为目标数目个第一输入数据,进行逐元素操作的处理,从而得到第一逐元素处理结果。
[0237]
上述实施例中,可以将第一网络层的逐元素操作融合到第二网络层中,对神经网络模型中的第二网络层的至少一个输入数据和所述第一网络层的至少一个输入数据进行融合处理,减少神经网络模型的执行时间,提高神经网络模型的执行效率,同时提升了单位时间内神经网络模型处理数据的吞吐量,降低了单位时间内处理相同数据规模的延时和功耗。
[0238]
在一些可选实施例中,在对数据进行处理时,如果处理器支持向量化操作,应当使用向量化来实现第一网络层的逐元素操作。
[0239]
处理器可以通过一条向量化指令,完成下面公式中的计算。
[0240]
output[0]=input[0][0] input[1]0.[0241]
output[1]=input[0][1] input[1][1]
[0242]
output[2]=input[0][2] input[1][2]
[0243]
output[3]=input[0][3] input[1][3]
[0244]
向量化之后:
[0245]
output_vector=input[0]_vector input[1]_vector
[0246]
因为向量长度为4,所以每个vector(向量)中有4个元素。
[0247]
在不同处理器架构中,向量的长度会不一样,本公开中不会限定向量长度的范围。
[0248]
与前述方法实施例相对应,本公开还提供了装置的实施例。
[0249]
如图17所示,图17是本公开根据一示例性实施例示出的一种神经网络模型的优化装置框图,装置包括:选取模块610,用于从所述神经网络模型中选取至少两个目标网络层,其中,所述至少两个目标网络层包括第一网络层和与所述第一网络层的输入端连接的第二网络层,所述第一网络层为逐元素操作层;融合处理模块620,用于将所述至少两个目标网
络层进行融合处理,得到优化后的所述神经网络模型。
[0250]
在一些可选实施例中,所述融合处理模块包括:将所述第一网络层的逐元素操作融合到所述第二网络层中。
[0251]
在一些可选实施例中,所述选取模块包括:从与所述逐元素操作层的输入端连接的至少一个网络层中,选取网络深度最深的网络层作为所述第二网络层。
[0252]
在一些可选实施例中,所述第二网络层用于实现第一操作,所述装置还包括:第二读取模块,用于从第一存储设备读取所述第二网络层的第一输入数据和所述逐元素操作层的至少一个第二输入数据;第二数据处理模块,用于通过融合层对所述第一输入数据进行所述第一操作的处理,得到第一处理结果,其中,所述融合层是通过对所述至少两个目标网络层进行融合处理得到的;第三数据处理模块,用于通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果;第一数据写入模块,用于将所述第二处理结果写入第二存储设备,其中,所述优化后的神经网络模型的输出结果是基于所述第二处理结果得到的。
[0253]
在一些可选实施例中,所述装置还包括:第一确定模块,用于确定所述融合处理得到的融合层一次性处理的数据的目标数目,所述目标数目为大于2的整数;所述第三数据处理模块包括:基于所述目标数目,同步读取所述第一处理结果和所述至少一个第二输入数据,进行所述逐元素操作层的逐元素操作的处理,得到第二处理结果,其中,所述第一处理结果和所述至少一个第二输入数据的数据数量之和等于所述目标数目。
[0254]
在一些可选实施例中,所述第一确定模块包括:获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
[0255]
在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述第三数据处理模块包括:将同步读取的所述第一处理结果和所述至少一个第二输入数据写入所述目标数目的第一寄存设备中;将预先写入至少一个第二寄存设备中的所述特定参数,分别与至少一个第一寄存设备中的数据乘加操作,得到所述第二处理结果。
[0256]
在一些可选实施例中,所述第一网络层的逐元素操作包括基于特定参数的乘加操作;所述装置还包括:优化处理模块,用于如果所述乘加操作中的至少一个特定参数包括目标数值,对所述第一网络层的逐元素操作进行优化处理,得到优化处理后的所述逐元素操作。
[0257]
在一些可选实施例中,所述第一网络层的逐元素操作包括乘加操作,所述装置还包括:第一接收模块,用于接收乘加指令;执行模块,用于基于所述乘加指令,执行所述第一网络层的乘加操作。
[0258]
如图18所示,图18是本公开根据一示例性实施例示出的一种数据处理装置框图,装置包括:第三读取模块710,用于从第一存储设备读取第一输入数据和至少一个第二输入数据;第四数据处理模块720,用于通过融合层对所述第一输入数据进行第一操作的处理,得到第一处理结果,其中,所述融合层是通过对第一网络层和第二网络层进行融合处理得到的,所述第一网络层为逐元素操作层,所述第二网络层的输出端与所述第一网络层的输入端连接;第五数据处理模块730,用于通过所述融合层对所述第一处理结果和所述至少一个第二输入数据进行逐元素操作的处理,得到第二处理结果;第二数据写入模块740,用于
将所述第二处理结果写入第二存储设备。
[0259]
如图19所示,图19是本公开根据一示例性实施例示出的另一种数据处理装置框图,装置包括:第一读取模块810,用于从存储设备读取目标数目个第一输入数据,所述目标数目为大于2的整数;第一数据处理模块820,用于对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理,得到第一逐元素处理结果;存储模块830,用于将所述第一逐元素处理结果存储到所述存储设备。
[0260]
在一些可选实施例中,在所述逐元素操作的多个待处理数据的数目大于预设数值的情况下,所述装置还包括:数据获取模块,用于从所述存储设备获取多个第二输入数据,其中,所述多个第二输入数据包括所述第一逐元素处理结果;第六数据处理模块,用于对所述多个第二输入数据进行所述逐元素操作的处理,得到第二逐元素处理结果。
[0261]
在一些可选实施例中,所述装置还包括:参数获取模块,用于获取所述神经网络模型分别在多个候选数据数量条件下的测试性能参数;第二确定模块,用于基于所述测试性能参数,从所述多个候选数据数量中确定所述目标数目。
[0262]
在一些可选实施例中,所述逐元素操作包括基于特定参数的乘加操作;所述第一数据处理模块包括:将读取到的所述目标数目个第一输入数据写入所述目标数目的第一寄存设备中;将预先写入多个第二寄存设备中的特定参数与所述目标数目个第一寄存设备中的数据进行乘加操作,得到所述第一逐元素处理结果。
[0263]
在一些可选实施例中,还包括:第二接收模块,用于接收目标乘加指令;所述第一数据处理模块包括:按照所述目标乘加指令,对读取到的所述目标数目个第一输入数据进行神经网络模型中第一网络层的逐元素操作的处理。
[0264]
在一些可选实施例中,所述目标数目个第一输入数据包括所述神经网络模型中的第二网络层的至少一个输入数据和所述第一网络层的至少一个输入数据,其中,所述第二网络层的输出端与所述第一网络层的输入端连接;所述第一数据处理模块包括:对所述第二网络层的至少一个输入数据进行所述第二网络层的操作处理,得到第一处理结果;对所述第一处理结果和所述第一网络层的至少一个输入数据进行逐元素操作的处理,得到第一逐元素处理结果。
[0265]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0266]
本公开实施例还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述任一所述的神经网络模型的优化方法。
[0267]
本公开实施例还提供了一种计算机可读存储介质,存储介质存储有计算机程序,计算机程序用于执行上述任一所述的数据处理方法。
[0268]
在一些可选实施例中,本公开实施例提供了一种计算机程序产品,包括计算机可读代码,当计算机可读代码在设备上运行时,设备中的处理器执行用于实现如上任一实施例提供的操作优化方法的指令。
[0269]
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(software development kit,sdk)等等。
[0270]
本公开实施例还提供了一种神经网络模型的优化装置,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现上述任一项所述的神经网络模型的优化方法。
[0271]
图20为本公开实施例提供的一种神经网络模型的优化装置的硬件结构示意图。该神经网络模型的优化装置910包括处理器911,还可以包括输入装置912、输出装置913和存储器914。该输入装置912、输出装置913、存储器914和处理器911之间通过总线相互连接。
[0272]
存储器包括但不限于是随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、或便携式只读存储器(compact disc read-only memory,cd-rom),该存储器用于相关指令及数据。
[0273]
输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。
[0274]
处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(central processing unit,cpu),在处理器是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。
[0275]
存储器用于存储网络设备的程序代码和数据。
[0276]
处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。
[0277]
可以理解的是,图20仅仅示出了一种神经网络模型的优化装置的简化设计。在实际应用中,操作优化装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本公开实施例的神经网络模型的优化装置都在本公开的保护范围之内。
[0278]
本公开实施例还提供了一种数据处理装置,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为调用所述存储器中存储的可执行指令,实现上述任一所述的数据处理方法。
[0279]
图21为本公开实施例提供的一种数据处理装置的硬件结构示意图。该数据处理装置1010包括处理器1011,还可以包括输入装置1012、输出装置1013和存储器1014。该输入装置1012、输出装置1013、存储器1014和处理器1011之间通过总线相互连接。
[0280]
存储器包括但不限于是随机存储记忆体(random access memory,ram)、只读存储器(read-only memory,rom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、或便携式只读存储器(compact disc read-only memory,cd-rom),该存储器用于相关指令及数据。
[0281]
输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。
[0282]
处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessing unit,cpu),在处理器是一个cpu的情况下,该cpu可以是单核cpu,也
可以是多核cpu。
[0283]
存储器用于存储网络设备的程序代码和数据。
[0284]
处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。
[0285]
可以理解的是,图21仅仅示出了一种数据处理装置的简化设计。在实际应用中,操作优化装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本公开实施例的数据处理装置都在本公开的保护范围之内。
[0286]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或者惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0287]
以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜