神经网络模型的优化方法、装置、设备及存储介质与流程

文档序号:23263256发布日期:2020-12-11 18:52阅读:154来源:国知局
神经网络模型的优化方法、装置、设备及存储介质与流程

本申请实施例涉及人工智能领域,特别涉及一种神经网络模型的优化方法、装置、设备及存储介质。



背景技术:

随着人工智能(artificialintelligence,ai)技术的不断发展,神经网络模型被应用到越来越多的场景,比如,神经网络模型被部署在移动终端中,以提高移动终端的智能化程度。

然而,神经网络模型的高算力需求与移动终端的低算力的矛盾也越来越突出,因此,如何降低对移动终端的算力需求,并提高推理速度成为优化神经网络模型的关键。



技术实现要素:

本申请实施例提供了一种神经网络模型的优化方法、装置、设备及存储介质。所述技术方案如下:

一方面,本申请实施例提供了一种神经网络模型的优化方法,所述方法包括:

通过遍历神经网络模型中神经网络节点之间的节点连接关系,构建所述神经网络模型对应的至少一张网络子图,所述神经网络节点包括神经网络输入节点、神经网络输出节点以及至少一个神经网络中间节点,每张所述网络子图由至少一个所述神经网络节点构成,且同一网络子图中的所述神经网络节点之间相连;

确定所述网络子图中的离群网络子图,所述离群网络子图中不包含所述神经网络输入节点和所述神经网络输出节点;

根据所述离群网络子图优化所述神经网络模型。

另一方面,本申请实施例提供了一种神经网络模型的优化装置,所述装置包括:

构建模块,用于通过遍历神经网络模型中神经网络节点之间的节点连接关系,构建所述神经网络模型对应的至少一张网络子图,所述神经网络节点包括神经网络输入节点、神经网络输出节点以及至少一个神经网络中间节点,每张所述网络子图由至少一个所述神经网络节点构成,且同一网络子图中的所述神经网络节点之间相连;

第一确定模块,用于确定所述网络子图中的离群网络子图,所述离群网络子图中不包含所述神经网络输入节点和所述神经网络输出节点;

优化模块,用于根据所述离群网络子图优化所述神经网络模型。

另一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器;所述存储器存储有至少一条指令,所述至少一条指令用于被所述处理器执行以实现如上述方面所述的神经网络模型的优化方法。

另一方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一条指令,所述至少一条指令用于被处理器执行以实现如上述方面所述的神经网络模型的优化方法。

另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面提供的神经网络模型的优化方法。

本申请实施例提供的技术方案至少包括如下有益效果:

本申请实施例提供的方案中,基于神经网络节点之间的节点连接关系,构建得到神经网络模型的网络子图,对于不包含神经网络输入以及输出节点的网络子图,由于此类网络子图中神经网络节点的更新并不会影响神经网络输出节点,因此通过将此类网络子图确定离群网络子图,并根据离群网络子图对神经网络模型进行优化,能够达到在不影响神经网络模型质量的前提下,简化神经网络模型的效果,从而降低神经网络模型对移动终端的算力需求,进而提高部署至移动终端侧的神经网络模型的推理速度。

附图说明

图1示出了本申请一个示例性实施例提供的神经网络模型的优化方法的方法流程图;

图2是一个示意性实施例示出的神经网络模型优化过程的实施示意图;

图3示出了本申请另一个示例性实施例提供的神经网络模型的优化方法的方法流程图;

图4是一个示例性实施例提供的数组更新过程的流程图;

图5是本申请一个示例性实施例提供的基于数组生成网络子图过程的实施示意图;

图6是一个示例性实施例示出的确定主群网络子图中无效神经网络节点过程的流程图;

图7是一个示意性实施例示出的神经网络模型优化过程的实施示意图;

图8示出了本申请一个实施例提供的神经网络模型的优化装置的结构框图;

图9示出了本申请一个示例性实施例提供的计算机设备的结构方框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

本申请实施例提供的神经网络模型的优化方法应用于计算机设备,该计算机设备设置有神经网络模型优化程序,该神经网络模型优化程序用于对神经网络模型进行精简优化。该计算机设备可以是个人计算机、工作站或服务器等等。

在一些实施例中,计算机设备中还部署有神经网络训练框架,且该神经网络模型优化程序被应用于训练框架中,用于对通过神经网络训练框架训练得到的神经网络模型进行优化,删除神经网络模型中的无用节点。其中,该神经网络训练框架,包括但不限于tensorflow,pytorch、onnx、mxnet等,本申请实施例并不对计算机设备以及神经网络训练框架的具体类型进行限定。为了方便描述,下述各个实施例以神经网络模型的优化方法用于计算机设备为例进行说明。

请参考图1,其示出了本申请一个示例性实施例提供的神经网络模型的优化方法的方法流程图,该方法可以包括如下步骤。

步骤101,通过遍历神经网络模型中神经网络节点之间的节点连接关系,构建神经网络模型对应的至少一张网络子图,神经网络节点包括神经网络输入节点、神经网络输出节点以及至少一个神经网络中间节点,每张网络子图由至少一个神经网络节点构成,且同一网络子图中的神经网络节点之间相连。

其中,该神经网络模型可以是通过神经网路训练框架训练得到,或者,该神经网络模型可以是通过神经网路训练框架训练得到,且经过轻量化处理。

可选的,该神经网络模型可以为卷积神经网络(convolutionalneuralnetworks,cnn)模型、循环神经网络(recurrentneuralnetworks,rnn)模型、长短期记忆网络(longshorttermmemory,lstm)模型等等,且该神经网络模型可以用于图像识别、自然语言处理、语义识别、内容推荐等等,本申请实施例并不对神经网络模型的具体类型以及用途进行限定。

本申请实施例中,每个神经网络节点对应神经网络模型中的一个网络层(layer),且每个神经网络节点中包含多个算子,不同神经网络节点之间的算子相互连接,从而模拟出神经元之间的连接关系。

在一些实施例中,神经网络输入节点又被称为神经网络输入层(inputlayer),是直接与模型外部原始数据交互的一层。神经网络输出节点用于规范化外部数据格式,比如将外部数据(比如图片)转化为张量。

神经网络中间节点又被称为神经网络隐藏层(hiddenlayer),用于对数据进行特征提取和抽象。通常情况下,神经网络模型中包含多个神经网络中间节点,且不同神经网络中间节点之间拓扑相连。比如,在卷积神经网络模型中,该神经网络隐藏层即为多级卷积层。

神经网络输出节点又被称为神经网络输出层(outputlayer),用于输出模型的计算结果。在用于进行图像识别的神经网络模型中,神经网络输出层用于输出图像分类结果,且输出层输出的数据维度与图像分类标签的数量相同。

在一个示例性的例子中,如图2所示,神经网络模型21中包含6个神经网络节点,分别为神经网络节点a至f,其中,神经网络节点a为神经网络输入节点,神经网络节点f为神经网络输出节点,其它神经网络节点为神经网络中间节点。神经网络模型推理过程中,原始数据输入神经网络输入节点,经过若干个神经网络中间节点运算后,最终由神经网络输出节点输出推理结果。然而,上述推理过程中,并非所有神经网络中间节点的运算结果均会对神经网络输出节点的输出造成影响,因此为了避免神经网络中间节点的无效运算,本申请实施例中采用构建网络子图的方式,识别神经网络模型中的离群神经网络节点。

在一种可能的实施方式中,计算机设备基于神经网络节点之间的节点连接关系,采用并查集(unionfind)算法构建神经网络模型的网络子图。其中,同一网络子图中的神经网络节点之间相连,即对于网络子图中的任一神经网络节点,至少存在一个其他神经网络节点与该神经网络节点直接相连;不同网络子图中的神经网络节点之间不相连,即不同网络子图中任意两个神经网络节点之间不相连。

示意性的,如图2所示,基于神经网络节点之间的节点连接关系,计算机设备构建得到第一网络子图22以及第二网络子图23,其中,第一网络子图22中包含神经网络节点a、b、c、f,第二网络子图23中包含神经网络节点d、e。

步骤102,确定网络子图中的离群网络子图,离群网络子图中不包含神经网络输入节点和神经网络输出节点。

由于神经网络模型的推理路径是由神经网络输入节点、若干神经网络中间节点和神经网络输出节点顺次连接形成,因此该推理路径上的各个神经网络节点位于同一网络子图中。相应的,神经网络模型中,推理路径之外的神经网络节点包含在其他网络子图中,由于这一类网络子图中神经网络中间节点的更新并不会影响神经网络输出节点(同样对神经网络输入节点也没有影响),因此,计算机设备将不包含神经网络输入节点和神经网络输出节点的网络子图确定为离群网络子图。

示意性的,如图2所示,由于第二网络子图23中不包含神经网络输入节点a以及神经网络输出节点f,因此计算机设备将第二网络子图23确定为离群子图。

步骤103,根据离群网络子图优化神经网络模型。

进一步的,由于离群网络子图中的神经网络节点并不会对实际推理结果造成影响,反而会导致推理过程中的无用运算,因此计算机设备根据该离群网络子图中的神经网络节点,对神经网络模型进行精简优化,得到优化后的神经网络模型。

示意性的,如图2所示,计算机设备根据第二网络子图23中的神经网络节点d和e,对神经网络模型21进行精简,得到优化后的神经网络模型24(仅包含神经网络网络a、b、c、f)。

需要说明的是,上述实施例中的神经网络模型仅用于示意性说明,在实际应用过程中,神经网络模型中神经网络中间节点的数量更多,且拓扑结构更为复杂,本申请实施例并不对神经网络模型的结构进行限定。

显然,采用本申请实施例提供的方案对神经网络模型进行优化,能够去除神经网络模型中不影响推理结果的神经网络中间节点,从而简化了神经网络模型的结构;且后续推理过程中,无需对神经网络中间节点进行运算,提高了神经网络模型的推理速度。

综上所述,本申请实施例提供的方案中,基于神经网络节点之间的节点连接关系,构建得到神经网络模型的网络子图,对于不包含神经网络输入以及输出节点的网络子图,由于此类网络子图中神经网络节点的更新并不会影响神经网络输出节点,因此通过将此类网络子图确定离群网络子图,并根据离群网络子图对神经网络模型进行优化,能够达到在不影响神经网络模型质量的前提下,简化神经网络模型的效果,从而降低神经网络模型对移动终端的算力需求,进而提高部署至移动终端侧的神经网络模型的推理速度。

针对网络子图的构建方式,在一种可能的实施方式中,计算机设备构建神经网络模型中神经网络节点对应的数组,并通过并查集算法对数组中的数值进行更新,从而根据更新后数组中的数值生成网络子图,下面采用示意性的实施例进行说明。

请参考图3,其示出了本申请另一个示例性实施例提供的神经网络模型的优化方法的方法流程图,该方法可以包括如下步骤。

步骤301,构建神经网络模型数组,神经网络模型数组中数组元素的数量与神经网络节点的数量相同,且神经网络模型数组中各个神经网络节点对应数组元素的初始数值不同。

在一种可能的实施方式中,计算机设备根据神经网络模型中神经网络节点的数量,构建神经网络模型数组,并为神经网络模型数组中的各个数组元素设置初始数值,其中,每个神经网络节点对应神经网络模型数组中的一个数组元素,且各个神经网络节点对应的初始数值不同。

示意性的,如图5所示,神经网络模型中51中包含6个神经网络节点,分别为神经网络节点a至f,其中,神经网络节点a为神经网络输入节点,神经网络节点f为神经网络输出节点,其它神经网络节点为神经网络中间节点。计算机设备构建包含6个数组元素的神经网络模型数组52,并设置数组中神经网络节点a对应数组元素的初始数值为1,神经网络节点b对应数组元素的初始数值为2,神经网络节点c对应数组元素的初始数值为3,神经网络节点d对应数组元素的初始数值为4,神经网络节点e对应数组元素的初始数值为5,神经网络节点f对应数组元素的初始数值为6。

步骤302,根据神经网络节点之间的节点连接关系,更新神经网络模型数组。

在一种可能的实施方式中,当两个神经网络节点之间相连时,计算机设备根据两个神经网络节点之间的输入输出关系,对神经网络模型数组中数组元素的数值进行更新,使相连神经网络节点对应数组元素的数值相同。

可选的,如图4所示,本步骤可以包括如下步骤:

步骤302a,获取第一神经网络节点和第二神经网络节点。

在一些实施例中,计算机设备从神经网络节点中选取第一神经网络节点后,依次将剩余的其他神经网络节点确定为第二神经网络节点。

在一种可能的实施方式中,计算机设备以神经网络输入节点为遍历起点,将神经网络输入节点确定为第一神经网络节点,并从除神经网络输入节点以外的其他神经网络节点中选取第二神经网络节点。

步骤302b,获取第一神经网络节点对应的第一节点名称,以及第二神经网络节点对应输入节点的第二节点名称。

在一种可能的实施方式中,神经网络节点包含自身的节点名称,且当神经网络节点存在对应的输入节点时,该神经网络节点还包含输入节点的节点名称,其中,神经网络节点的输入即为该神经网络节点对应输入节点的输出。

示意性的,如图4所示,神经网络节点b的输入节点为神经网络节点a,因此神经网络节点b包含自身节点名称“b”以及输入节点的节点名称“a”;神经网络节点e的输入节点为神经网络节点d,因此神经网络节点e包含自身节点名称“e”以及输入节点的节点名称“d”。

步骤302c,响应于第一节点名称与第二节点名称相同,确定第一神经网络节点和第二神经网络节点之间相连。

当两个神经网络节点之间相连时,其中一个神经网络节点的输出即为另一神经网络节点的输入,因此,计算机设备检测第一神经网络节点的第一节点名称与第二神经网络节点对应输入节点的第二节点名称是否相同,若相同,则确定第一神经网络节点与第二神经网络节点相连(且第一神经网络节点的输出数据输入第二神经网络节点),若不相同,则确定第一神经网络节点与第二神经网络节点不相连。

示意性的,如图5所示,对于神经网络节点a和神经网络节点b,由于神经网络节点b对应输入节点的节点名称为“a”,与神经网络节点a的节点名称一致,因此,计算机设备确定神经网络节点a与神经网络节点b相连。对于神经网络节点a和神经网络节点c,由于神经网络节点c对应输入节点的节点名称为“c”,与神经网络节点a的节点名称不一致,因此,计算机设备确定神经网络节点a与神经网络节点c不相连。

步骤302d,响应于第一神经网络节点和第二神经网络节点之间相连,将神经网络模型数组中第二神经网络节点对应数组元素的数值更新为第一神经网络节点对应数组元素的数值。

在一种可能的实施方式中,当第一神经网络节点与第二神经网络节点相连,且第一神经网络节点为第二神经网络节点的输入节点时,终端将神经网络模型数组中第二神经网络节点对应数组元素的数值更新为第一神经网络节点对应数组元素的数值。

示意性的,如图5所示,当第一神经网络节点为神经网络节点a,第二神经网络节点为神经网络节点b时,由于神经网络节点a为神经网络节点b的输入节点,因此计算机设备将神经网络模型数组52中神经网络节点b对应数组元素的数值由2修改为1。对于神经网络节点c至f,由于神经网络节点a并不是神经网络节点c至f的输入节点,因此,计算机设备并不修改神经网络节点c至f对应数组元素的数值。

对于神经网络模型中的任意两个神经网络节点,计算机设备通过上述步骤确定神经网络节点之间是否相连,并更新神经网络模型数组中的数值,直至完成所有节点连接关系遍历。

示意性的,如图5所示,基于神经网络节点b与其他节点的连接关系,计算机设备将神经网络模型数组52中,神经网络节点c对应数组元素的数值修改为1(与神经网络节点b相连);基于神经网络节点c与其他节点的连接关系,计算机设备将神经网络模型数组52中,神经网络节点f对应数组元素的数值修改为1(与神经网络节点c相连);基于神经网络节点d与其他节点的连接关系,计算机设备将神经网络模型数组52中,神经网络节点e对应数组元素的数值修改为4(与神经网络节点d一致);基于神经网络节点e与其他节点的连接关系,计算机设备保持神经网络模型数组52中数组元素的数值;基于神经网络节点f与其他节点的连接关系,计算机设备保持神经网络模型数组52中数组元素的数值。

步骤303,响应于完成节点连接关系遍历,根据神经网络模型数组中数组元素的数值构建网络子图,其中,同一网络子图中神经网络节点在神经网络模型数值中对应数组元素的数值相同。

进一步的,完成所有节点连接关系遍历后,计算机设备根据神经网络模型数组中数组元素的数值,将相同数值对应的神经网络节点划分至同一网络子图中。

示意性的,如图5所示,由于神经网络模型数组52中,神经网络节点a、b、c、f对应数组元素的数值均为1,而神经网络节点d和e对应数组元素的数值均为4,因此计算机设备将神经网络节点a、b、c、f划分至第一网络子图53,将神经网络节点d和e划分至第二网络子图54。

步骤304,确定网络子图中的离群网络子图,离群网络子图中不包含神经网络输入节点和神经网络输出节点。

本步骤的实施方式可以参考上述步骤102,本实施例在此不再赘述。

步骤305,从神经网络模型中删除离群网络子图中的离群神经网络节点以及离群网络节点对应的权值,得到优化后的神经网络模型。

关于根据离群网络子图优化神经网络模型的方式,在一种可能的实施方式中,计算机设备从神经网络模型中删除离群神经网络节点(即离群网络子图中的神经网络节点)。由于删除的离群神经网络节点将不再参与后续推理过程,因此为了降低后续推理过程中加载模型所占用的内存空间,计算机设备对模型文件中离群网络节点对应的权值(位于权值矩阵中)进行删除。

示意性的,如图5所示,计算机设备从神经网络模型51中删除神经网络节点d和e,并将神经网络节点d和e对应的权值删除。

步骤306,对优化后的神经网络模型进行编译,得到神经网络模型对应的目标程序。

在一种可能的实施方式中,上述神经网络模型的离线(offline)优化过程在模型转换时执行。进一步的,当神经网络模型采用运行前编译(aheadoftime,aot)时,计算机设备对优化后的神经网络模型(包括权值矩阵)进行编译,得到硬件所能识别并运行的目标程序(二进制程序),从而将编译得到的目标程序打包成安装包,供移动终端安装。

相较于直接对未优化的神经网络模型进行编译,采用本申请实施例提供的方法对神经网络模型进行优化后编译,生成的目标程序的数据量更小,因此在运行时占用的内存更小;同时,模型推理过程中不需要执行无用算子,从而降低对移动终端的算力需求,并提高了模型的推理速度。

当然,若神经网络模型采用运行时编译(justintime,jit)时,移动终端即在运行优化后的神经网络模型的过程中进行编译,得到目标程序,本实施例对此不作限定。

本实施例中,计算机设备基于构建的神经网络模型数组以及神经网络节点之间的连接关系,识别出神经网络模型的离群网络子图,并对离群网络子图中的离群神经网络节点进行删除,简化了神经网络模型,并避免执行离群神经网络节点造成的算力浪费。

通过上述实施例提供的方法,可以删除神经网络模型中的离群神经网络节点,对于包含神经网络输入以及输出节点的网络子图,虽然其中的神经网络节点位于同一主群,但是其中仍旧存在部分不影响神经网络输出节点的无效神经网络节点。为了进一步优化神经网络模型,在一种可能的实施方式中,在图3的基础上,如图6所示,上述步骤303之后,还可以包括如下步骤。

步骤307,确定网络子图中的主群网络子图,主群网络子图中包含神经网络输入节点和神经网络输出节点。

本申请实施例中,计算机设备将包含神经网络输入节点以及输出节点的网络子图确定为主群网络子图,该主群网络子图中的神经网络节点即为主群神经网络节点。

示意性的,如图7所示,计算机设备根据神经网络模型71的节点连接关系,构建得到第一网络子图72和第二网络子图73,由于神经网络节点a为神经网络输入节点,且神经网络节点f为神经网络输出节点,因此第一网络子图72即为主群网络子图。

步骤308,根据主群网络子图中各个主群神经网络节点之间的节点连接关系,确定主群网络子图中的无效神经网络节点,无效神经网络节点与神经网络输出节点之间不连通。

虽然主群网络子图中的任一神经网络节点与至少一个其他神经网络节点相连,但是并非所有神经网络节点的运算结果均会对神经网络输出节点造成影响,因此本实施例中,计算机设备基于主群神经网络节点之间的节点连接关系,确定出与神经网络输出节点不连通的无效神经网络节点。

在一种可能的实施方式中,本步骤可以包括如下步骤:

一、根据主群神经网络节点对应的输入节点名称和输出节点名称,确定各个主群神经网络节点之间的节点连接关系。

在一种可能的实施方式中,计算机设备获取各个主群神经网络节点各自对应的输入节点的输入节点名称以及输出节点的输出节点名称。当第一主群神经网络节点对应的输出节点名称与第二主群神经网络节点对应的输入节点名称一致时,则确定第一主群神经网络节点和第二主群神经网络节点相连,且由第一主群神经网络节点指向第二主群神经网络节点。通过遍历各个主群神经网络节点,计算机设备确定出主群神经网络节点之间的节点连接关系以及节点指向。

二、根据主群神经网络节点之间的节点连接关系,确定各个主群神经网络节点与神经网络输出节点之间的连通性。

进一步,计算机设备根据主群神经网络节点之间的节点连接关系以及节点指向,确定主群神经网络节点与神经网络输出节点之间是否存在通路,若存在,则确定主群神经网络节点与神经网络输出节点之间连通,若不存在,则确定主群神经网络节点与神经网络输出节点之间连通。

在一种可能的实施方式中,计算机设备可以采用求解有向图中通路的方法,确定主群神经网络节点是否与神经网络输出节点连通,本申请实施例对此不作限定。

示意性的,如图7所示,计算机设备确定出第一网络子图72中,主群神经网络节点a、b、c、f与神经网络输出节点之间连通。

三、响应于主群神经网络节点与神经网络输出节点之间不连通,将主群神经网络节点确定为无效神经网络节点。

当主群神经网络节点与神经网络输出节点之间不连通时,该主群神经网络节点的更新并不影响神经网络输出节点,因此计算机设备将该主群神经网络节点确定为无效神经网络节点。

示意性的,如图7所示,计算机设备将主群神经网络节点d、e、g、h确定为无效神经网络节点。

步骤309,从神经网络模型中删除无效神经网络节点。

进一步的,计算机设备从神经网络模型中删除无效神经网络节点,进而简化神经网络模型的结构。可选的,计算机设备删除无效神经网络节点对应的权值,从而降低神经网络模型运行时占用的内存。

示意性的,如图7所示,通过删除无效神经网络节点以及第二网络子图72中的神经网络节点,计算机设备得到优化后的神经网络模型74。

本实施例中,计算机设备通过检测主群神经网络节点与神经网络输出节点之间的连通性,删除与神经网络输出节点不连通的无效神经网络节点,在不影响神经网络模型质量的情况下,进一步简化了神经网络模型。

请参考图8,其示出了本申请一个实施例提供的神经网络模型的优化装置的结构框图。该装置可以通过软件、硬件或者两者的结合实现成为计算机设备的全部或一部分。该装置包括:

构建模块801,用于通过遍历神经网络模型中神经网络节点之间的节点连接关系,构建所述神经网络模型对应的至少一张网络子图,所述神经网络节点包括神经网络输入节点、神经网络输出节点以及至少一个神经网络中间节点,每张所述网络子图由至少一个所述神经网络节点构成,且同一网络子图中的所述神经网络节点之间相连;

第一确定模块802,用于确定所述网络子图中的离群网络子图,所述离群网络子图中不包含所述神经网络输入节点和所述神经网络输出节点;

优化模块803,用于根据所述离群网络子图优化所述神经网络模型。

可选的,构建模块801,包括:

数组构建单元,用于构建神经网络模型数组,所述神经网络模型数组中数组元素的数量与所述神经网络节点的数量相同,且所述神经网络模型数组中各个神经网络节点对应数组元素的初始数值不同;

数组更新单元,用于根据所述神经网络节点之间的节点连接关系,更新所述神经网络模型数组;

子图构建单元,用于响应于完成节点连接关系遍历,根据所述神经网络模型数组中数组元素的数值构建所述网络子图,其中,同一网络子图中神经网络节点在所述神经网络模型数值中对应数组元素的数值相同。

可选的,所述数组更新单元,用于:

获取第一神经网络节点和第二神经网络节点;

响应于所述第一神经网络节点和所述第二神经网络节点之间相连,将所述神经网络模型数组中所述第二神经网络节点对应数组元素的数值更新为所述第一神经网络节点对应数组元素的数值。

可选的,所述数组更新单元,用于:

获取所述第一神经网络节点对应的第一节点名称,以及所述第二神经网络节点对应输入节点的第二节点名称;

响应于所述第一节点名称与所述第二节点名称相同,确定所述第一神经网络节点和所述第二神经网络节点之间相连。

可选的,所述构建模块801,用于:

以所述神经网络输入节点为遍历起点,根据所述经网络节点之间的节点连接关系,更新所述神经网络模型数组。

可选的,所述装置还包括:

第二确定模块,用于确定所述网络子图中的主群网络子图,所述主群网络子图中包含所述神经网络输入节点和所述神经网络输出节点;

连通性确定模块,用于根据所述主群网络子图中各个主群神经网络节点之间的节点连接关系,确定所述主群网络子图中的无效神经网络节点,所述无效神经网络节点与所述神经网络输出节点之间不连通;

删除模块,用于从所述神经网络模型中删除所述无效神经网络节点。

可选的,所述连通性确定模块,用于:

根据所述主群神经网络节点对应的输入节点名称和输出节点名称,确定各个所述主群神经网络节点之间的节点连接关系;

根据所述主群神经网络节点之间的节点连接关系,确定各个所述主群神经网络节点与所述神经网络输出节点之间的连通性;

响应于所述主群神经网络节点与所述神经网络输出节点之间不连通,将所述主群神经网络节点确定为所述无效神经网络节点。

可选的,所述优化模块803,用于:

从所述神经网络模型中删除所述离群网络子图中的离群神经网络节点以及所述离群网络节点对应的权值,得到优化后的所述神经网络模型。

可选的,所述装置还包括:

编译模块,用于对优化后的所述神经网络模型进行编译,得到所述神经网络模型对应的目标程序。

综上所述,本申请实施例提供的方案中,基于神经网络节点之间的节点连接关系,构建得到神经网络模型的网络子图,对于不包含神经网络输入以及输出节点的网络子图,由于此类网络子图中神经网络节点的更新并不会影响神经网络输出节点,因此通过将此类网络子图确定离群网络子图,并根据离群网络子图对神经网络模型进行优化,能够达到在不影响神经网络模型质量的前提下,简化神经网络模型的效果,从而降低神经网络模型对移动终端的算力需求,进而提高部署至移动终端侧的神经网络模型的推理速度。

请参考图9,其示出了本申请一个示例性实施例提供的计算机设备的结构方框图。本申请中的计算机设备可以包括一个或多个如下部件:处理器910和存储器920。

处理器910可以包括一个或者多个处理核心。处理器910利用各种接口和线路连接整个计算机设备内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行计算机设备的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器910可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)、神经网络处理器(neural-networkprocessingunit,npu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责触摸显示屏所需要显示的内容的渲染和绘制;npu用于实现人工智能(artificialintelligence,ai)功能;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块芯片进行实现。

存储器920可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory,rom)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储根据计算机设备的使用所创建的数据(比如音频数据、电话本)等。

除此之外,本领域技术人员可以理解,上述附图所示出的计算机设备的结构并不构成对计算机设备的限定,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,计算机设备中还包括输入输出组件、显示组件或网络通信组件等部件,在此不再赘述。

本申请实施例还提供了一种计算机可读存储介质,该存储介质存储有至少一条指令,至少一条指令用于被处理器执行以实现如上述实施例所述神经网络模型的优化方法。

本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例提供的神经网络模型的优化方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。

以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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