本技术涉及计算机,具体而言,本技术涉及一种模型结构方法、装置、电子设备及存储介质。
背景技术:
1、神经网络基本原理是一种模拟人脑神经系统功能的计算模型,该模型可以用计算图进行表示,该计算图由多个节点组成,节点之间通过边相连,这些节点构成了多个层,每一层节点的输入都是上一层节点的输出,最终输出层的输出即为神经网络的结果。
2、对于某个神经网络模型,它其中的节点数量以及节点构成的层级数量可以反应出该模型的复杂程度,而复杂程度可以反应出该模型占用的空间大小以及计算效率,一般来说,节点数量越少或层级数量越少,模型的占用空间就越小,计算效率也越高。而在解决较为复杂的问题时,模型设计者设计出来的模型也往往较为复杂,可能存在成千上万个节点,此时该模型占用的存储空间会较大且进行计算的效率也较低,因此,需要采用一种方法对复杂神经网络模型的结构进行优化以解决上述问题。
3、现有技术的方案中,一般通过优化匹配算法对神经网络模型的结构进行优化,但优化匹配算法仅能针对输出节点为单个节点的节点结构进行优化,而对于输出节点为多个节点的节点结构无法进行优化,如图1所示,图1中最左边第一个节点结构中的a→b为目标优化结构,由于该目标优化结构中输入节点只有节点a且输出节点只有节点b,因此可以直接采用优化匹配算法将该结构替换为节点n(即优化为第二个节点结构);图1中的第三个节点结构中的a→b0,a→b1为目标优化结构,由于该目标优化结构中包含b0、b1两个输出节点,因此无法直接采用优化匹配算法将其优化为第四个节点结构。
4、而在实际操作中,很多时候神经网络模型的结构都会采用多个输出点的形式,因此,现有技术方案的优化能力十分有限,优化后的模型仍然存在上述问题。
技术实现思路
1、本技术的目的旨在至少能解决上述的技术缺陷之一,本技术实施例所提供的技术方案如下:
2、第一方面,本技术实施例提供了一种模型结构优化方法,包括:
3、获取目标模型的节点结构,并确定节点结构中的目标优化结构;其中,目标优化结构包含一个父节点和父节点对应的至少两个子节点;
4、分别确定每一子节点的原始输出节点,新增第一节点,将第一节点作为至少两个子节点的新的输出节点,并将第一节点作为原始输出节点的输入节点;
5、将目标优化结构和第一节点作为待替换结构,采用第二节点替换待替换结构,得到优化后的节点结构;其中,第二节点的执行算法与待替换结构的执行算法相同。
6、在本技术的一种可选实施例中,新增第一节点之前,具体还包括:
7、根据目标优化结构在节点结构中确定出目标支配点;目标支配点为节点结构中执行顺序在目标优化结构之后、距离各子节点最近,且在按照与执行顺序相反的顺序同时遍历各子节点过程中的必经公共节点;
8、新增第一节点,具体包括:
9、基于目标支配点新增第一节点。
10、在本技术的一种可选实施例中,基于目标支配点新增第一节点,具体包括:
11、基于节点结构中各个节点的执行顺序依次遍历各节点,若执行顺序在目标支配点之前的结构中包括目标优化结构,则获取第一子节点,并基于节点结构在第一子节点与第一输出节点之间新增第一节点;其中,第一子节点为各子节点中的任一节点,第一输出节点为第一子节点的原始输出节点。
12、在本技术的一种可选实施例中,将第一节点作为至少两个子节点的新的输出节点之后,具体包括:
13、将各第二子节点的输出值存储至第一节点中;其中,第二子节点为各子节点中除第一子节点外的其他节点;
14、对于每一输出值,生成关于输出值与对应的第二子节点的键值对;
15、将第一节点作为原始输出节点的输入节点,具体包括:
16、对于第一输出节点,基于第一子节点与第一输出节点的对应关系,将第一节点作为第一输出节点的输入节点;
17、对于每一第二输出节点,基于节点结构确定对应的第二子节点,并根据关于第二子节点的键值对将第一节点作为第二输出节点的输入节点;其中,第二输出节点为第二子节点的原始输出节点。
18、在本技术的一种可选实施例中,生成关于输出值与对应的第二子节点的键值对之后,具体还包括:
19、将各键值对存储至预设字典中;
20、根据关于第二子节点的键值对将第一节点作为第二输出节点的输入节点,具体包括:
21、从预设字典中获取关于第二子节点的键值对,并根据键值对将第一节点作为第二输出节点的输入节点。
22、在本技术的一种可选实施例中,根据键值对将第一节点作为第二输出节点的输入节点,具体包括:
23、获取键值对的键值,并根据键值将第二输出节点的输入值调整为第一节点中存储的对应的输出值。
24、在本技术的一种可选实施例中,将目标优化结构和第一节点作为待替换结构,采用第二节点替换待替换结构,得到优化后的节点结构,具体包括:
25、将目标优化结构的父节点作为待替换结构的起始点,将第一节点作为待替换结构的终止点;
26、基于起始点、终止点,通过优化匹配算法将待替换结构替换为第二节点。
27、第二方面,本技术实施例提供了一种模型结构优化装置,包括:
28、目标优化结构获取模块,用于获取目标模型的节点结构,并确定节点结构中的目标优化结构;其中,目标优化结构包含一个父节点和父节点对应的至少两个子节点;
29、节点生成模块,用于分别确定每一子节点的原始输出节点,新增第一节点,将第一节点作为至少两个子节点的新的输出节点,并将第一节点作为原始输出节点的输入节点;
30、节点结构优化模块,用于将目标优化结构和第一节点作为待替换结构,采用第二节点替换待替换结构,得到优化后的节点结构;其中,第二节点的执行算法与待替换结构的执行算法相同。
31、在本技术的一种可选实施例中,该装置还包括目标支配点获取模块,具体用于:
32、根据目标优化结构在节点结构中确定出目标支配点;目标支配点为节点结构中执行顺序在目标优化结构之后、距离各子节点最近,且在按照与执行顺序相反的顺序同时遍历各子节点过程中的必经公共节点;
33、节点生成模块,具体用于:
34、基于目标支配点新增第一节点。
35、在本技术的一种可选实施例中,节点生成模块进一步用于:
36、基于节点结构中各个节点的执行顺序依次遍历各节点,若执行顺序在目标支配点之前的结构中包括目标优化结构,则获取第一子节点,并基于节点结构在第一子节点与第一输出节点之间新增第一节点;其中,第一子节点为各子节点中的任一节点,第一输出节点为第一子节点的原始输出节点。
37、在本技术的一种可选实施例中,该装置还包括键值对生成模块,具体用于:
38、将各第二子节点的输出值存储至第一节点中;其中,第二子节点为各子节点中除第一子节点外的其他节点;
39、对于每一输出值,生成关于输出值与对应的第二子节点的键值对;
40、节点生成模块还可以用于:
41、对于第一输出节点,基于第一子节点与第一输出节点的对应关系,将第一节点作为第一输出节点的输入节点;
42、对于每一第二输出节点,基于节点结构确定对应的第二子节点,并根据关于第二子节点的键值对将第一节点作为第二输出节点的输入节点;其中,第二输出节点为第二子节点的原始输出节点。
43、在本技术的一种可选实施例中,该装置还包括键值对存储模块,具体用于:
44、将各键值对存储至预设字典中;
45、节点生成模块还可以用于:
46、从预设字典中获取关于第二子节点的键值对,并根据键值对将第一节点作为第二输出节点的输入节点。
47、在本技术的一种可选实施例中,节点生成模块还可以用于:
48、获取键值对的键值,并根据键值将第二输出节点的输入值调整为第一节点中存储的对应的输出值。
49、在本技术的一种可选实施例中,节点结构优化模块具体用于:
50、将目标优化结构的父节点作为待替换结构的起始点,将第一节点作为待替换结构的终止点;
51、基于起始点、终止点,通过优化匹配算法将待替换结构替换为第二节点。
52、第三方面,本技术实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序;
53、处理器执行计算机程序以实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
54、第四方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
55、本技术实施例提供的技术方案带来的有益效果是:
56、通过在多个输出节点后创建一个新的节点,将模型的优化结构调整为单节点输出的形式,从而使得多节点输出的结构也能进行优化,打破了优化匹配算法的限制,能大幅度提高神经网络模型的优化程度,进而可以大幅度减少神经网络模型占用的存储空间且能大幅度提高神经网络模型的计算效率。