权利要求书
1.一种人工智能处理器的学习任务编译方法,其特征在于,所述方法包括:
通用处理器获取第一配置参数及第二配置参数,其中,所述第一配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Batch Norm层的第一训练参数和第二训练参数;所述第二配置参数包括Scale层的第一训练参数和第二训练参数;
所述通用处理器将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果;
所述通用处理器将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;
所述通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优
化,得到优化后的卷积神经网络;
对优化后的卷积神经网络进行编译,得到对应的二进制指令序列,以分配至人工智能处理器上执行对应的学习任务。
2.根据权利要求1所述的方法,其特征在于,所述通用处理器将所述Batch Norm层的第一训
练参数以及所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果,包括:
所述通用处理器将所述Batch Norm层的第一训练参数、所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
3.根据权利要求1所述的方法,其特征在于,所述通用处理器将所述Batch Norm层的第二训
练参数以及所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果,包括:
所述通用处理器将所述Batch Norm层的第二训练参数、所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
4.根据权利要求1所述的方法,其特征在于,所述通用处理器根据所述第一融合结果以及所
述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络,包括:
所述通用处理器删除所述Batch Norm层以及所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述通用处理器将卷积层的输入数据分别与所述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果。
6.根据权利要求5所述的方法,其特征在于,所述通用处理器将卷积层的输入数据分别与所
述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果,包括:
所述通用处理器将所述输入数据与所述第一融合结果进行乘法运算,得到第一运算结果;
所述通用处理器将所述第一运算结果与所述第二融合结果进行加法运算,得到所述输出结果。
7.根据权利要求1所述的方法,其特征在于,所述Batch Norm层的第一训练参数包括用于执
行Batch Norm层的卷积计算的至少一个第一训练子参数;所述Batch Norm层的第二训练参数包括用于执行Batch Norm层的卷积计算的至少一个第二训练子参数。
8.根据权利要求7所述的方法,其特征在于,
若所述Batch Norm层的第一训练参数包括多个第一训练子参数,则所述通用处理器将所述多个第一训练子参数进行运算,得到第一中间运算结果;
将所述第一中间运算结果以及所述Scale层的第一训练参数与所述卷积层的权值参数融合,得到所述第一融合结果。
9.根据权利要求7所述的方法,其特征在于,
若所述Batch Norm层的第二训练参数包括多个第二训练子参数,则所述通用处理器将所述多个第二训练子参数进行运算,得到第二中间运算结果;
将所述第二中间运算结果以及所述Scale层的第二训练参数与所述卷积层的偏置参数融合,得到所述第二融合结果。
10.根据权利要求1所述的方法,其特征在于,所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数;所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
11.一种人工智能处理器的学习任务编译系统,包括存储器、处理器及存储在所述存储器上
并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处
理器执行时实现权利要求1至10中任一项所述的方法的步骤。
技术说明书
一种人工智能处理器的学习任务编译方法及相关产品
相关申请:
本申请要求2018年12月29日提交,申请号为201811640762.2,技术名称为“卷积神经网络的优化方法、装置、存储介质和系统”的优先权。
技术领域
本申请涉及人工智能技术领域,特别是涉及一种人工智能处理器的学习任务编译方法及相关产品。
背景技术
在人工智能处理器运行神经网络时,一般首先需要利用通用处理器(CPU)对包含神经网络的算子的神经网络进行编译得到可执行文件,该可执行文件包含设备信息,即可执行文件需在异构计算机系统中的哪一设备上执行。可执行文件被汇编链接后可得到神经网络的可执行程序,并将该可执行程序存储。
CPU可以从可执行程序的存储位置读取可执行程序,并根据该可执行程序得到程序的多个任
务。这些任务被分发至人工智能处理器上执行,最终获得运算结果。
一般情况下,神经网络中存在大量的算子,人工智能处理器在执行这些算子的运算逻辑时,通常会循环执行如下步骤:
从片外缓存上读取上一算子的运算结果,基于该上一算子的运算结果执行当前算子的运算任务,并在执行完当前算子的运算任务后,将该运算任务的运算结果写入片外缓存。因此,设备在执行神经网络的运算任务时,每执行完一个算子的相关运算即需要进行一次数据交换。这不仅导致数据处理效率降低,还会占用片间通信资源。
技术内容
基于此,有必要针对上述技术问题,提供一种人工智能处理器的学习任务编译方法及相关产品。
一种编译人工智能处理器的学习任务的方法,所述方法包括:
通用处理器获取第一配置参数及第二配置参数,其中,所述第一配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Batch Norm层的第一训练参数和第二训练参数;所述第二配置参数包括Scale层的第一训练参数和第二训练参数;
所述通用处理器将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果;
所述通用处理器将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;
所述通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络;
对优化后的卷积神经网络进行编译,得到对应的二进制指令序列,以分配至人工智能处理器上执行对应的学习任务。
在其中一个实施例中,所述通用处理器将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果,包括:
所述通用处理器将所述Batch Norm层的第一训练参数、所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
在其中一个实施例中,所述通用处理器将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果,包括:
所述通用处理器将所述Batch Norm层的第二训练参数、所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
在其中一个实施例中,所述通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络,包括:
所述通用处理器删除所述Batch Norm层以及所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
在其中一个实施例中,所述方法还包括:
所述通用处理器将卷积层的输入数据分别与所述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果。
在其中一个实施例中,所述通用处理器将卷积层的输入数据分别与所述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果,包括:
所述通用处理器将所述输入数据与所述第一融合结果进行乘法运算,得到第一运算结果;
所述通用处理器将所述第一运算结果与所述第二融合结果进行加法运算,得到所述输出结果。
在其中一个实施例中,所述Batch Norm层的第一训练参数包括用于执行BatchNorm层的卷积计算的至少一个第一训练子参数;所述Batch Norm层的第二训练参数包括用于执行Batch
Norm层的卷积计算的至少一个第二训练子参数。
在其中一个实施例中,所述通用处理器若所述Batch Norm层的第一训练参数包括多个第一训练子参数,则将所述多个第一训练子参数进行运算,得到第一中间运算结果;
将所述第一中间运算结果以及所述Scale层的第一训练参数与所述卷积层的权值参数融合,得到所述第一融合结果。
在其中一个实施例中,所述通用处理器若所述Batch Norm层的第二训练参数包括多个第二训练子参数,则将所述多个第二训练子参数进行运算,得到第二中间运算结果;
将所述第二中间运算结果以及所述Scale层的第二训练参数与所述卷积层的偏置参数融合,得到所述第二融合结果。
在其中一个实施例中,所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数;所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
一种编译人工智能处理器的学习任务的系统,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本公开任一实施例中方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本公开任一实施例中方法的步骤。
对于本技术方案来说,首先删除卷积神经网络中冗余的神经网络层,简化网络结构,之后再对简化的卷积网络结构进行编译。由于优化后的神经网络将Batch Norm层和/或Scale层融合进卷积层,因此,Batch Norm层和/或Scale层的中的算子融合进卷积层中的卷积算子,即融合后的神经网络中的算子的数量减少,由于CPU是按照算子对神经网络进行编译,由此可知,上述编译人工智能处理器的学习任务的方法,在编译神经网络时编译的算子数量减少,因此,上述编译人工智能处理器的学习任务的方法编译效率高。此外,由于在执行神经网络对应的学习任务时,每执行完一个算子的相关运算即需要进行一次数据交换,因此,神经网络通过上述编译人工智能处理器的学习任务的方法进行编译,在设备上被执行时可以减少处理过程中的数据交换。
附图说明
图1为一个实施例中通用处理器100的结构示意图;
图2为一个实施例中步骤S110的流程示意图;
图3为一个实施例中两层网络结构优化的示意图;
图4为另一个实施例中步骤S110的流程示意图;
图5为另一个实施例中两层网络结构优化的示意图;
图6为另一个实施例中步骤S110的流程示意图;
图7为一个实施例中三层网络结构优化的示意图;
图8为另一个实施例中步骤S110的流程示意图;
图9为另一个实施例中步骤S110的流程示意图;
图10为一个实施例中编译人工智能处理器的学习任务的结构框图;
图11为一个实施例提出的计算机系统的结构示意图;
图12为一个实施例提出的一种神经网络处理方法的流程示意图;
图13为一个实施例提出的一种编译人工智能处理器的学习任务的方法的流程示意图;
图14为一个实施例提出的任务调度装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
如图11所示为本申请的一个实施例提出的计算机系统的结构示意图。该计算机系统为异构计算机系统。其中,通用处理器100(CPU)可以对计算机程序代码进行编译,得到可执行文件。通用处理器100还可以执行通用处理器的计算机指令。该人工智能处理器(IPU)300可以为加速处理器APU(Accelerated Processing Unit)、图形处理器GPU(GraphicsProcessing Unit)、神经网络处理器NPU(neural-network processing units)等人工智能处理器。人工智能处理器可以执行人工智能处理器的计算机指令。
可选地,通用处理器100在对计算机程序代码进行编译一般会将通用处理器代码和人工智能处理器代码分别进行编译,得到通用处理器100和人工智能处理器200的可执行文件。该可执行文件中包含设备信息。得到通用处理器100和人工智能处理器200的可执行文件进行汇编和
链接后可得到二进制指令序列(程序可执行文件)。
通用处理器100可以根据二进制指令序列得到多个任务。这些任务被分发至通用处理器和人工智能处理器上执行,最终得到程序的输出结果。
片外缓存300,用于存储程序运行过程中的数据,例如可以存储各个任务的执行结果。
具体地,如图1所示该通用处理器100包括:存储器110和多个处理器核120,存储器110上存储有处理器核120可执行的指令;存储器110可以进行片内存储,也可以进行片外存储;各个处理器核可以通过内总线进行通信。处理器核可以执行对神经网络的结构进行优化、编译的任务。
进一步地,为了确定这些二进制指令序列得到的多个任务的在哪一处理器核上执行,以及这些任务的执行顺序,在其中一个可选地实施例中,上述异构计算机系统还可以连接一任务调度装置400。该任务调度装置可以将通用处理器得到的二进制指令序列被划分成的多个任务进行调度。该调度过程可以包括:根据任务的基本信息(例如类型、大小、依赖关系等信息)对任务规划拆分方案得到任务的分解信息,即得到如何拆分任务得到任务的作业的方案;对任务的作业进行调度,得到调度信息,即得到各个作业的执行处理器和/或处理器核。这些作业被执行即可得到对应任务的运算结果。
如图14所示,该任务调度装置400可以包括第一读写电路410、匹配电路420和选择电路430,第一读写电路410、匹配电路420和选择电路430依次电连接,选择电路430连接人工智能处理器。任务调度装置400可以对任务的分解信息和全部任务信息进行处理,得到调度信息,该调度信息用于人工智能处理器确定需处理的作业,以及人工智能处理器需处理的多个作业的处理顺序。该调度信息可以包括为多个作业的作业标识,各作业对应的人工智能处理器身份信息,以及该多个作业被对应人工智能处理器处理的位次信息。可选地,该人工智能处理器
200可以包括多个处理器核以及用于控制处理器核运行的控制装置。可选地,多个处理器核
均连接至该控制装置。
具体地,第一读写电路410用于在接收到任务(例如人工智能处理器的学习任务)的任务调度请求时,根据任务的任务调度请求,获取任务的分解信息和全部任务信息,以及处理器的状
态信息。可选地,该第二读写控制电路可以为I/O电路。
匹配电路420用于根据各个任务的分解信息和全部任务信息,以及人工智能处理器的处理器核的状态信息,分别将任务的各个作业与处理器核进行匹配,并将与处理器核匹配成功的作业添加至待调度作业集。其中,该待调度作业集可以包括多个任务的作业。进一步地,若在预设时间(如128节拍或256节拍)内,任务中的一个以上的作业与处理器核未匹配成功时,则获取任务的调度失败信号。
具体地,匹配电路420可以根据任务的全部任务信息及任务分解信息,可以获得该任务的各个作业所需的处理器核信息(如处理器核类型等信息),根据各个作业的大小获得各个作业所需的处理器核的处理能力等信息。处理器核的处理器状态信息可以包括处理器核的类型信息、处理器核的运行状态信息(处理器核是否空闲)以及处理器核的处理能力等信息。这样,匹配电路120可以根据该任务的全部任务信息及任务分解信息,以及处理器核状态信息,将任务的各个作业与处理器核进行匹配。可选地,该匹配电路420可以由一个以上的比较器并联形成,每个比较器的输入数据可以是各个作业的分解信息和全部任务信息,以及处理器核的状态信息,比较器的输出数据可以是匹配成功或匹配失败的信号。进一步地,若作业与处理器核匹配成功时,匹配电路还可以进一步获得与该作业匹配的处理器核的标识等信息,所述标识用于标识处理器核的身份(例如处理器核编号等等)。
选择电路430用于根据待调度作业集中各个作业的目标权重从待调度作业集中选定目标作业,获得调度信息。具体地,任务调度装置400可以将该待调度作业集中的多个作业逐一发送至处理器核进行处理,选择电路430根据待调度作业集中各个作业的目标权重确定当前进行调度的目标作业。其中,该待调度作业集中各个作业的目标权重可以计算获得,当然,该待调度作业集中各个作业的目标权重也可以是预先设置。
可选地,在一个实施例中,该选择电路430可以包括运算器和与该运算器连接的选择器,该运算器可以连接至匹配电路420,该选择器可以连接至人工智能处理器200。其中,运算器用于根据待调度作业集中各个作业的目标权重,并根据待调度作业集中各个作业的目标权重确定各个作业的调度优先级,即运算器可以根据待调度作业集中各个作业的目标权重大小,对各个作业进行排序,获得各个作业的调度优先级。选择器用于根据各个作业的调度优先级,将待调度作业集中调度优先级最高的作业作为目标作业,获得调度信息。其中,该调度优先
级最高的作业可以是目标权重最大的作业,即该目标作业为待调度作业集中目标权重最大的作业。这样,通过优先调度目标权重最大的作业,能够实现目标作业优先抢占处理器资源,从而可以优化任务调度过程。
在一个实施例中,待调度作业集的数量为一个以上,每个待调度集用于存储同一作业类别的作业,其中,每个作业的作业类别可以与该作业所属的任务的任务类别相同。具体地,选择电路包括运算器和选择器,该运算器可以连接至匹配电路,该选择器可以连接至第二处理器。其中,运算器用于分别根据每个作业类别对应的待调度作业集中多个作业的期望权重和当前历史权重,确定每个作业类别对应的待调度作业集中各个作业的目标权重,并将作业类别对应的待调度作业集中目标权重最大的作业作为作业类别的预发射作业。选择器用于根据各个预发射作业的目标权重确定目标作业,获得调度信息。
在一个实施例中,如图12所示,提出了一种神经网络处理方法,下面以将该卷积神经网络处理方法应用到图11所示的计算机系统为例具体说明本方法的执行过程。该方法包括:
步骤S11,对人工智能处理器的学习任务的卷积神经网络进行编译,得到对应的二进制指令序列。
步骤S12,将所述二进制指令分配至人工智能处理器上,以使人工智能处理器执行对应的学习任务。
其中,卷积神经网络是一种神经网络,神经网络包含多个神经网络层,各个神经网络层上包含算子。算子是一个函数空间到函数空间上的映射O:X→X,即算子表示需要执行何种运算/操作。神经网络中的算子通过权值连接形成神经网络的结构。具体地,通用处理器100在对卷积神经网络进行编译后得到二进制指令序列。可选地,该二进制指令序列中的指令为人工智能处理器的计算机指令。通用处理器会根据二进制指令序列得到对应的学习任务。进一步地,由于该二进制指令序列中的指令为人工智能处理器的计算机指令,因此,通用处理器会将学习任务分发至人工智能处理器上的设备上执行,得到卷积神经网络的处理结果。
在一个实施例中,在执行步骤S11时,可以通过图13的一种编译人工智能处理器的学习任务的方法对神经网络进行编译,下面以将该卷积神经网络的编译方法应用到图11所示的计算机
系统为例具体说明本方法的执行过程。该方法包括以下步骤:
步骤S110,对人工智能处理器的学习任务的对应的卷积神经网络的结构进行优化,得到优化后的卷积神经网络。
步骤S120,对优化后的卷积神经网络进行编译得到二进制执行序列。
其中,如图2所示,步骤S110,即对卷积神经网络的优化过程,可以具体包括:
步骤202,通用处理器获取配置参数。其中,配置参数包括Batch Norm层的第一训练参数和第二训练参数。具体地,可以在Caffe框架下获取用于执行Batch Norm层的卷积计算的第一训练参数及第二训练参数。可选地,Batch Norm层包含Batch Norm算子,BatchNorm算子表示需要进行Batch Norm操作。进一步,Caffe指的是卷积神经网络框架,即一种常用的深度学习框架。Caffe的源码文件支持配置和更改,也就是说,在配置Caffe的过程中可以对模型进行重新定义和优化。Caffe框架指的是利用机器学习算法通过训练得到的数学模型。
步骤204,通用处理器将所述Batch Norm层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果。具体地,可以将步骤202中获取到的BatchNorm层的第一训练参数与卷积层的权值参数进行融合计算,得到第一融合结果。作为一种可选的实施方式,所述Batch Norm层的第一训练参数包括用于执行Batch Norm层的卷积计算的至少一个第一训练子参数。具体的,若Batch Norm层的第一训练参数包括多个第一训练子参数,则将
Batch Norm层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤206,通用处理器将所述Batch Norm层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。具体地,可以将步骤202中获取到的BatchNorm层的第二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。作为一种可选的实施方式,所述Batch Norm层的第二训练参数包括用于执行Batch Norm层的卷积计算的至少一个第二训练子参数。具体的,若Batch Norm层的第二训练参数包括多个第二训练子参数,则将
Batch Norm层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤208,通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络
进行优化,得到优化后的卷积神经网络。具体地,可以根据步骤204中得到的第一融合结果和步骤206中得到的第二融合结果,完成对该卷积神经网络的优化。
上述卷积神经网络优化方法中,通过将Batch Norm层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
基于上述卷积神经网络优化方法完成的编译人工智能处理器的学习任务的方法,首先删除卷积神经网络中冗余的神经网络层,简化网络结构,之后再对简化的卷积网络结构进行编译。由于优化后的神经网络将Batch Norm层融合进卷积层,因此,Batch Norm层中的Batch Norm算子也融合进卷积层中的卷积算子,即融合后的神经网络中的算子的数量减少,由于CPU是按照算子对神经网络进行编译,由此可知,上述编译人工智能处理器的学习任务的方法,在编译神经网络时编译的算子数量减少,因此,上述编译人工智能处理器的学习任务的方法编译效率高。此外,由于在执行神经网络对应的学习任务时,每执行完一个算子的相关运算即需要进行一次数据交换,因此,神经网络通过上述编译人工智能处理器的学习任务的方法进行编译,在设备上被执行时可以减少处理过程中的数据交换。
本实施例中的一种神经网络处理方法,首先对神经网络中卷积神经进行优化处理,删除卷积神经网络中冗余的神经网络层,简化网络结构,之后在对优化后的卷积神经网络进行编译得到二进制指令序列。该二进制指令序列被划分成多个学习任务执行时,由于该二进制指令序列对应的卷积神经网络中算子的被融合,即算子数量减少,由于异构计算机系统在每执行完一个算子的相关运算后需与片外缓存进行一次数据交换。因此,本技术方案可以减少与片外缓存的数据交换次数。在其中一个实施例中,将所述Batch Norm层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图3所示的包括卷积层Convolution和Batch Norm层的两层连续结构可以被优化为一层Convolution,即将Batch Norm层的计算融合到Convolution层,就可以删除Batch Norm层。
Batch Norm层主要对输入数据进行归一化处理,即其中,x表示Batch Norm层的输入数据;xnorm表示经过归一化处理后的Batch Norm层的输出数据;μ表示累计计算的均值;σ表示累
计计算的方差。
所谓归一化处理主要是为了简化数据处理过程,能够将输入数据映射到[0,1]或[-1,1]的区间内,把有量纲的表达式变换成为无量纲的表达式,成为纯量,便于不同单位或量级的指标能够进行比较和加权,从而使数据处理更加便捷、快速。
举例说明,Batch Norm层的计算公式为经简化处理,获得公式(1)。请参阅公式(1):
Batch Norm层的训练过程是从总样本中提取mini-batch个样本进行多次前向训练,并通过滑动
平均的方式,更新Caffe框架中的计算参数。
在其中一个实施例中,若所述Batch Norm层的第一训练参数包括多个第一训练子参数,则将所述多个第一训练子参数进行运算,得到第一中间运算结果;将所述第一中间运算结果与所述卷积层的权值参数融合,得到所述第一融合结果。
具体地,为了将Batch Norm层的计算过程融合到Convolution层中,可以获取用于执行Batch
Norm层的卷积计算的第一训练参数及用于执行Batch Norm层的卷积计算的第二训练参数。
其中,请参阅公式(1),用于执行Batch Norm层的卷积计算的第一训练参数包括多个第一训练子参数(alpha,var,scale),用于执行Batch Norm层的卷积计算的第二训练参数包括多个第二训练子参数(alpha,mean,var,scale,beta)。
其中,上述第一训练参数或第二训练参数(alpha,mean,var,scale,beta)为向量。Caffe框架中的每一类第一训练参数或第二训练参数不止一个,例如:若Caffe框架中的第一训练子参数alpha有多个,则获取Caffe框架中的所有alpha。
具体地,请继续参阅公式(1),将第一训练参数中的多个第一训练子参数(alpha,var,scale)与Convolution层的权值weights进行乘法运算,也就是说,将多个第一训练子参数进行运算,得到的第一中间运算结果与Convolution层的权值weights相乘,得到第一融合结果
在其中一个实施例中,通用处理器将所述Batch Norm层的第二训练参数以及所述卷积层的偏
置参数进行加法运算,得到所述第二融合结果。
在其中一个实施例中,若所述Batch Norm层的第二训练参数包括多个第二训练子参数,则将所述多个第二训练子参数进行运算,得到第二中间运算结果;将所述第二中间运算结果与所述卷积层的偏置参数融合,得到所述第二融合结果。
举例说明,请继续参阅公式(1),将Batch Norm层的第二训练参数中的多个第二训练子参数
(alpha,mean,var,scale,beta)与Convolution层的偏置bias进行加法运算,也就是说,将多
个第二训练子参数进行运算得到的第二中间运算结果与Convolution层的偏置bias相加,得到第二融合结果
在其中一个实施例中,删除所述Batch Norm层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Batch Norm层是对于模型推理贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,Batch Norm层结构,在进行前向传播时,Batch Norm层的构建和执行消耗了大量计算资源,反而让网络结构重复、复杂,因此,通过步骤204和步骤206将Batch Norm层的卷积计算融合到卷积层之后,可以将Batch
Norm层删除。
进一步,可以将卷积层的权值参数更改为步骤204中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果可以将卷积层的偏置参数更改为步骤206中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果从而将Batch Norm层执行的归一化处理过程融合到Convolution层中,删除Batch Norm层,完成了卷积层
Convolution和Batch Norm层的两层连续结构的优化。上述卷积神经网络优化方法中,通过将Batch Norm层的归一化数据处理过程融合到卷积层中,能够在不损失网络精度的前提下,大
幅度提升网络性能;同时,实现网络融合后删除Batch Norm层,能够简化网络结构,提升网络运行速度。
作为一种可选的实施方式,若卷积神经网络包括多个Batch Norm层,则每一BatchNorm层都执行上述优化过程,将多个Batch Norm层的归一化处理过程均融合到Convolution层中,从而
可以删除多个冗余的Batch Norm层,使网络结构更加清晰,同时大幅度提升网络性能。
在一个实施例中,如图4所示,步骤S110,即卷积神经网络的优化过程,可以具体包括:
步骤302,通用处理器获取配置参数。
其中,配置参数包括人工智能处理器的学习任务对应卷积神经网络的Scale层的第一训练参数和第二训练参数。具体地,可以从Caffe框架中获取用于执行Scale层的卷积计算的第一训练参数及第二训练参数。
步骤304,通用处理器将所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤302中获取到的Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数。
具体的,若Scale层的第一训练参数包括多个第一训练子参数,则将Scale层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤306,通用处理器将所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤302中获取到的Scale层的第二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。
作为一种可选的实施方式,所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
具体的,若Scale层的第二训练参数包括多个第二训练子参数,则将Scale层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤308,通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络。
具体地,可以根据步骤304中得到的第一融合结果和步骤306中得到的第二融合结果,完成对该卷积神经网络的优化。
上述卷积神经网络优化方法中,通过将Scale层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
基于上述卷积神经网络优化方法完成的编译人工智能处理器的学习任务的方法,首先删除卷积神经网络中冗余的神经网络层,简化网络结构,之后再对简化的卷积网络结构进行编译。由于优化后的神经网络将Scale层融合进卷积层,因此,Scale层中的Scale层算子也融合进卷积层中的卷积算子,即融合后的神经网络中的算子的数量减少,由于CPU是按照算子对神经网络进行编译,由此可知,上述编译人工智能处理器的学习任务的方法,在编译神经网络时编译的算子数量减少,因此,上述编译人工智能处理器的学习任务的方法编译效率高。此外,由于在执行神经网络对应的学习任务时,每执行完一个算子的相关运算即需要进行一次数据交换,因此,神经网络通过上述编译人工智能处理器的学习任务的方法进行编译,在设备上被执行时可以减少处理过程中的数据交换。
在其中一个实施例中,将所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图5所示的包括卷积层Convolution和Scale层的两层连续结构可以被优化为一层
Convolution,即将Scale层的计算融合到Convolution层,就可以删除Scale层。
Scale层主要对归一化后的数据进行缩放和平移,即y=γ*xnorm+β,其中,xnorm表示经过归
一化处理后的Scale层的输入数据;γ表示缩放量;β表示平移量。
举例说明,Scale层的计算公式请参阅公式(2):
alpha*x+beta (2)
具体地,为了将Scale层的计算过程融合到Convolution层中,可以获取用于执行Scale层的卷积计算的第一训练参数及用于执行Scale层的卷积计算的第二训练参数。其中,请参阅公式
(2),用于执行Scale层的卷积计算的第一训练参数包括一个第一训练子参数(alpha),用于执
行Scale层的卷积计算的第二训练参数包括一个第二训练子参数(beta)。
其中,上述第一训练参数或第二训练参数(alpha,beta)为向量。Caffe框架中的每一类第一训练参数或第二训练参数不止一个,例如:若Caffe框架中的第一训练子参数alpha有多个,则获取Caffe框架中的所有alpha。
具体地,请继续参阅公式(2),将权值参数中的第一训练子参数(alpha)与Convolution层的权值
weights进行乘法运算,也就是说,将公式(2)中的alpha与Convolution层的权值weights相乘,
得到第一融合结果alpha*weights。
在其中一个实施例中,将所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
举例说明,请继续参阅公式(2),将Scale层的第二训练参数中的第二训练子参数(beta)与
Convolution层的偏置bias进行加法运算,也就是说,将公式(2)中的beta与Convolution层的偏
置bias相加,得到第二融合结果beta+bias。
在其中一个实施例中,通用处理器删除所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Scale层是对于模型训练贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,Scale层结构,在进行前向传播时,Scale层在执行卷积计算过程中并没有起到太大作用,反而让网络结构重复、复杂,因
此,通过步骤304和步骤306将Scale层的卷积计算融合到卷积层之后,可以将Scale层删除。
进一步,可以将卷积层的权值参数更改为步骤304中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果alpha*weights;可以将卷积层的偏置参数更改为步骤
306中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果-beta+bias。从而将Scale层执行的归一化处理过程融合到Convolution层中,删除Scale层,完
成了卷积层Convolution和Scale层的两层连续结构的优化。
上述卷积神经网络优化方法中,通过将Scale层的归一化数据处理过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除Scale层,能够简化网络结构,提升网络运行速度。作为一种可选的实施方式,若卷积神经网络包括多个Scale层,则每一Scale层都执行上述优化过程,将多个Scale层的缩放和平移处理过程均融合到Convolution层中,从而可以删除多个冗余的Scale层,使网络结构更加清晰,同时大幅度提升网络性能。
在一个实施例中,如图6所示,步骤S110,即卷积神经网络的优化过程可以具体包括:
步骤402,通用处理器获取第一配置参数及第二配置参数。
其中,第一配置参数包括人工智能处理器的学习任务对应卷积神经网络的BatchNorm层的第一训练参数和第二训练参数;第二配置参数包括人工智能处理器的学习任务对应卷积神经网络的Scale层的第一训练参数及Scale层的第二训练参数。
具体地,可以从Caffe框架中获取用于执行Batch Norm层的卷积计算的第一训练参数及第二训练参数,也可以从Caffe框架中获取用于执行Scale层的卷积计算的第一训练参数及第二训练参数。
步骤404,通用处理器将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与所述卷积神经网络的卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤402中获取到的人工智能处理器的学习任务对应卷积神经网络的Batch
Norm层的第一训练参数,以及人工智能处理器的学习任务对应卷积神经网络的Scale层的第
一训练参数与卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,所述Batch Norm层的第一训练参数包括用于执行Batch Norm层的卷积计算的至少一个第一训练子参数。所述Scale层的第一训练参数包括用于执行Scale层的卷积计算的至少一个第一训练子参数。
具体的,若Batch Norm层的第一训练参数包括多个第一训练子参数,则将BatchNorm层的所有第一训练子参数与卷积层的权值参数进行融合计算。若Scale层的第一训练参数包括多个第一训练子参数,则将Scale层的所有第一训练子参数与卷积层的权值参数进行融合计算。
步骤406,通用处理器将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与所述卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤402中获取到的人工智能处理器的学习任务对应卷积神经网络的Batch
Norm层的第二训练参数,以及人工智能处理器的学习任务对应卷积神经网络的Scale层的第
二训练参数与卷积层的偏置参数进行融合计算,得到第二融合结果。
作为一种可选的实施方式,所述Batch Norm层的第二训练参数包括用于执行Batch Norm层的卷积计算的至少一个第二训练子参数。所述Scale层的第二训练参数包括用于执行Scale层的卷积计算的至少一个第二训练子参数。
具体的,若Batch Norm层的第二训练参数包括多个第二训练子参数,则将BatchNorm层的所有第二训练子参数与卷积层的偏置参数进行融合计算。若Scale层的第二训练参数包括多个第二训练子参数,则将Scale层的所有第二训练子参数与卷积层的偏置参数进行融合计算。
步骤408,通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络。
上述卷积神经网络优化方法中,通过将Batch Norm层和Scale层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神
经网络层,能够简化网络结构,提升网络运行速度。
基于上述卷积神经网络优化方法完成的编译人工智能处理器的学习任务的方法,首先删除卷积神经网络中冗余的神经网络层,简化网络结构,之后再对简化的卷积网络结构进行编译。由于优化后的神经网络将Batch Norm层和Scale层融合进卷积层,因此,Scale层中的Scale层算子和Batch Norm层中的Batch Norm算子均融合进卷积层中的卷积算子,即融合后的神经网络中的算子的数量减少,由于CPU是按照算子对神经网络进行编译,由此可知,上述编译人工智能处理器的学习任务的方法,在编译神经网络时编译的算子数量减少,因此,上述编译人工智能处理器的学习任务的方法编译效率高。此外,由于在执行神经网络对应的学习任务时,每执行完一个算子的相关运算即需要进行一次数据交换,因此,神经网络通过上述编译人工智能处理器的学习任务的方法进行编译,在设备上被执行时可以减少处理过程中的数据交换。
在其中一个实施例中,将所述Batch Norm层的第一训练参数、所述Scale层的第一训练参数以及所述卷积层的权值参数进行乘法运算,得到所述第一融合结果。
其中,如图7所示的包括卷积层Convolution、Batch Norm层和Scale层的三层连续结构可以被优化为一层Convolution,即将Batch Norm层和Scale层的计算分别融合到Convolution层,就可以删除Batch Norm层和Scale层。另外,图7仅仅示出了神经网络中Convolution、Batch Norm层和Scale层三层之间的一种位置关系,本技术方案适用于将图7中的Batch Norm层和Scale层位置交换一下的示例。
具体地,为了将Batch Norm层和Scale层的计算过程都融合到Convolution层中,可以获取用于执行Batch Norm层的卷积计算的第一训练参数、用于执行Batch Norm层的卷积计算的第二训练参数、用于执行Scale层的卷积计算的第一训练参数以及用于执行Scale层的卷积计算的第二训练参数。
在其中一个实施例中,若所述Batch Norm层的第一训练参数包括多个第一训练子参数,则将所述多个第一训练子参数进行运算,得到第一中间运算结果;将所述第一中间运算结果以及所述Scale层的第一训练参数与所述卷积层的权值参数融合,得到所述第一融合结果。
举例说明,请参阅公式(1)和公式(2),将Batch Norm层的第一训练参数中的多个第一训练子参数(alpha,sqrt,var,scale)以及Scale层的第一训练参数中的第一训练子参数(alpha),与
Convolution层的权值weights进行乘法运算,也就是说,将公式(1)中多个第一训练子参数进
行运算得到的第一中间运算结果及公式(2)中的alpha,与Convolution层的权值weights相乘,得到第一融合结果
在其中一个实施例中,通用处理器将所述Batch Norm层的第二训练参数、所述Scale层的第二训练参数以及所述卷积层的偏置参数进行加法运算,得到所述第二融合结果。
在其中一个实施例中,若所述Batch Norm层的第二训练参数包括多个第二训练子参数,则将所述多个第二训练子参数进行运算,得到第二中间运算结果;将所述第二中间运算结果以及所述Scale层的第二训练参数与所述卷积层的偏置参数融合,得到所述第二融合结果。
举例说明,请继续参阅公式(1),将Batch Norm层的第二训练参数中的多个第二训练子参数
(alpha,mean,var,scale,beta)以及Scale层的第二训练参数中的第二训练子参数(beta),与Convolution层的偏置bias进行加法运算,也就是说,将公式(1)中多个第二训练子参数进行运
算得到的第二中间运算结果以及公式(2)中的beta,与Convolution层的偏置bias相加,得到第二融合结果
在其中一个实施例中,删除所述Batch Norm层和所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,在多层神经网络中,Batch Norm层和Scale层是对于模型训练贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,BatchNorm,Scale层结构,在进行前向传播时,Batch Norm层和Scale层在执行卷积计算过程中并没有起到太大作用,反而让网络结构重复、复杂,因此,通过步骤404和步骤406将BatchNorm层和Scale层的卷积计算融合到卷积层之后,可以将Batch Norm层和Scale层删除。
进一步,可以将卷积层的权值参数更改为步骤404中得到的第一融合结果,请参阅公式(1),将卷积层的权值参数更改第一融合结果可以将卷积层的偏置参数更改为步骤406中得到的第二融合结果,请继续参阅公式(1),将卷积层的偏置参数更改第二融合结果从而将Batch Norm
层和Scale层执行的归一化处理过程都融合到Convolution层中,删除BatchNorm层和Scale层,完成了卷积层Convolution、Batch Norm层和Scale层的三层连续结构的优化。
上述卷积神经网络优化方法中,通过将Batch Norm层和Scale层的归一化数据处理过程都融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除Batch Norm层和Scale层,能够简化网络结构,提升网络运行速度。
在其中一个实施例中,提供了一种卷积神经网络优化方法,以实现步骤S110中的卷积神经网络优化,该方法在如图1所示的通用处理器上运行,该方法包括将卷积层的输入数据分别与所述第一融合结果和所述第二融合结果进行卷积计算,得到卷积层的输出结果。如图8所示,具体包括以下步骤:
步骤502,通用处理器将所述输入数据与所述第一融合结果进行乘法运算,得到第一运算结果。
作为一种可选的实施方式,在如图2所示的Batch Norm层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(1),将卷积层的输入数据x与第一融合结果进行乘法运算,得到第一运算结果
作为一种可选的实施方式,在如图4所示的Scale层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(2),将卷积层的输入数据x与第一融合结果alpha*weights进行乘法运算,得到第一运算结果x*alpha*weights。
作为一种可选的实施方式,在如图6所示的Batch Norm层和Scale层都融合到卷积层的三层卷积神经网络的优化方法中,请参阅公式(1)和公式(2),将卷积层的输入数据x与第一融合结果进行乘法运算,得到第一运算结果
步骤504,通用处理器将所述第一运算结果与所述第二融合结果进行加法运算,得到所述输出结果。
作为一种可选的实施方式,在如图2所示的Batch Norm层融合到卷积层的两层卷积神经网络
的优化方法中,请参阅公式(1),第二融合结果为将第一运算结果与第二融合结果进行加法运算,得到输出结果
作为一种可选的实施方式,在如图4所示的Scale层融合到卷积层的两层卷积神经网络的优化方法中,请参阅公式(2),第二融合结果为beta+bias,将第一运算结果x*alpha*weights与第二融合结果beta+bias,进行加法运算,得到输出结果x*alpha*weights+beta+bias。
作为一种可选的实施方式,在如图6所示的Batch Norm层和Scale层都融合到卷积层的三层卷积神经网络的优化方法中,请参阅公式(1)和公式(2),第二融合结果将第一运算结果与二融合结果进行加法运算,得到输出结果
上述卷积神经网络优化方法中,将卷积层的输入数据分别与第一融合结果和第二融合结果进行卷积计算,能够在计算不会溢出的前提下保证优化后的网络精度不受损失,从而提升网络运行速度。
在一个实施例中,如图9所示,步骤S110,即卷积神经网络的优化过程可以具体包括:
步骤602,通用处理器获取配置参数。
其中,所述配置参数包括所述卷积神经网络的冗余神经网络层的第一训练参数及第二训练参数。该第一训练参数包括一个或多个第一训练子参数,该第二训练参数包括一个或多个第二训练子参数。
步骤604,通用处理器将所述卷积神经网络的冗余神经网络层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果。
具体地,可以将步骤602中获取到的第一训练参数和卷积层的权值参数进行融合计算,得到第一融合结果。
作为一种可选的实施方式,可以将第一训练参数与所述卷积神经网络的卷积层的权值参数进行乘法运算,得到第一融合结果。
具体的,若第一训练参数包括多个第一训练子参数,则将所有第一训练子参数与卷积层的权值参数进行乘法运算。
步骤606,通用处理器将所述卷积神经网络的冗余神经网络层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。
具体地,可以将步骤602中获取到的卷积神经网络的冗余神经网络层的第二训练参数和所述卷积神经网络的卷积层的偏置参数进行相应的融合计算,得到第二融合结果。
作为一种可选的实施方式,可以将第二训练参数与所述卷积神经网络的卷积层的偏置参数进行加法运算,得到第二融合结果。
具体的,若第二训练参数包括多个第二训练子参数,则将所有第二训练子参数与卷积层的偏置参数进行加法运算。
步骤608,通用处理器根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络。
具体地,可以根据步骤604中得到的第一融合结果和步骤606中得到的第二融合结果,完成对该卷积神经网络的优化。
作为一种可选的实施方式,删除冗余神经网络层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
其中,冗余神经网络层指的是部署在多层神经网络中,但对于模型推理贡献不大的网络结构。例如:轻量化卷积神经网络Mobile Net中,存在大量连续的Convolution,Batch
Norm,Scale层结构,在进行前向传播时,Batch Norm层和Scale层在执行卷积计算过程中并
没有起到太大作用,反而让网络结构重复、复杂,因此,可以把Batch Norm层和Scale层看做冗余神经网络层。但是,冗余神经网络层并不限于Batch Norm层和Scale层。
进一步,可以将卷积层的权值参数更改为步骤604中得到的第一融合结果;可以将卷积层的偏置参数更改为步骤606中得到的第二融合结果。从而将冗余神经网络层的数据处理过程融合到Convolution层中,删除冗余神经网络层,完成了卷积层Convolution和冗余神经网络层的结构优化。
上述卷积神经网络优化方法中,通过将冗余神经网络层的计算过程融合到卷积层中,能够在不损失网络精度的前提下,大幅度提升网络性能;同时,实现网络融合后删除冗余神经网络层,能够简化网络结构,提升网络运行速度。
基于上述卷积神经网络优化方法完成的编译人工智能处理器的学习任务的方法,首先删除卷积神经网络中冗余的神经网络层,简化网络结构,之后再对简化的卷积网络结构进行编译。由于优化后的神经网络将冗余的神经网络层融合进卷积层,因此,冗余的神经网络层中的算子均融合进卷积层中的卷积算子,即融合后的神经网络中的算子的数量减少,由于CPU是按照算子对神经网络进行编译,由此可知,上述编译人工智能处理器的学习任务的方法,在编译神经网络时编译的算子数量减少,因此,上述编译人工智能处理器的学习任务的方法编译效率高。此外,由于在执行神经网络对应的学习任务时,每执行完一个算子的相关运算即需要进行一次数据交换,因此,神经网络通过上述编译人工智能处理器的学习任务的方法进行编译,在设备上被执行时可以减少处理过程中的数据交换。
在Mobile Net中,通过在Caffe的源码文件caffe.proto中加入新的网络参数,如opt_level,用于表示网络优化级别。通过设置该参数值,从而自动检测卷积神经网络的网络结构,并根据设置的参数值,自动调用相应的卷积神经网络优化方法,能够节省用户的学习成本,在提高易用性的同时保留了用户选择的权利。
应该理解的是,虽然图2-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种编译人工智能处理器的学习任务的装置,包括:配置参数获取模块701、第一融合结果获取模块702、第二融合结果获取模块703和优化模块
704,其中:
配置参数获取模块701,用于获取配置参数,其中,所述配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Batch Norm层的第一训练参数和第二训练参数;
第一融合结果获取模块702,用于将所述Batch Norm层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果;
第二融合结果获取模块703,用于将所述Batch Norm层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;
优化模块704,用于根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络,以及,用于对优化后的卷积神经网络进行编译,得到对应的二进制指令,以分配至人工智能处理器上执行对应的学习任务。
在其中一个实施例中,配置参数获取模块701,还用于获取配置参数,其中,所述配置参数包括Scale层的第一训练参数及Scale层的第二训练参数。
在其中一个实施例中,配置参数获取模块701,还用于获取第一配置参数及第二配置参数,其中,所述第一配置参数包括Batch Norm层的第一训练参数和第二训练参数;所述第二配置参数包括Scale层的第一训练参数及Scale层的第二训练参数。
在其中一个实施例中,第一融合结果获取模块702,还用于将所述Scale层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果。
在其中一个实施例中,第一融合结果获取模块702,还用于将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果。
在其中一个实施例中,第二融合结果获取模块703,还用于将所述Scale层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。
在其中一个实施例中,第二融合结果获取模块703,还用于将所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果。
在其中一个实施例中,优化模块704,还用于删除所述Batch Norm层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
在其中一个实施例中,优化模块704,还用于删除所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
在其中一个实施例中,优化模块704,还用于删除所述Batch Norm层以及所述Scale层,并将所述卷积层的权值参数更改为所述第一融合结果,将所述卷积层的偏置参数更改为所述第二融合结果。
关于运算装置的具体限定可以参见上文中对于运算方法的限定,在此不再赘述。上述运算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取配置参数,其中,所述配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Batch Norm层的第一训练参数和第二训练参数;将所述
Batch Norm层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结
果;将所述Batch Norm层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被
处理器执行时实现以下步骤:获取配置参数,其中,所述配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Scale层的第一训练参数和第二训练参数;将所述Scale层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果;将所述Scale层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络,以及,对优化后的卷积神经网络进行编译,得到对应的二进制指令,以分配至人工智能处理器上执行对应的学习任务。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取第一配置参数及第二配置参数,其中,所述第一配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的Batch Norm层的第一训练参数和第二训练参数;所述第二配置参数包括所述人工智能处理器的学习任务对应卷积神经网络的
Scale层的第一训练参数和第二训练参数;将所述Batch Norm层的第一训练参数以及所述Scale层的第一训练参数与卷积神经网络的卷积层的权值参数融合,得到第一融合结果;将
所述Batch Norm层的第二训练参数以及所述Scale层的第二训练参数与卷积神经网络的卷积层的偏置参数融合,得到第二融合结果;根据所述第一融合结果以及所述第二融合结果,对所述卷积神经网络进行优化,得到优化后的卷积神经网络,以及,对优化后的卷积神经网络进行编译,得到对应的二进制指令,以分配至人工智能处理器上执行对应的学习任务。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率
SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路
(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动
态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
因篇幅问题不能全部显示,请点此查看更多更全内容